activeMQ 푸 시 mqtt 클 라 이언 트 2
activeMQ 를 사용 하여 안 드 로 이 드 푸 시 를 진행 할 때 다음 과 같은 문제 가 필요 합 니 다.
(1)activeMQ 배경 오류:프레임 크기 가 최대 허용 100 MB 보다 큰 257 MB
자세 한 오류 정보:
WARN | Transport Connection to: tcp://127.0.0.1:50916 failed: java.io.IOException: Frame size of 257 MB larger than max allowed 100 MB | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:50916@61616
해결 방법:
설정 파일 수정 apache-activemq-5.9.0-bin\apache-activemq-5.9.0\\conf\activemq.xml
0"/>
maxFrame 사 이 즈 를 좀 크게 해라.
(2)mqtt 클 라 이언 트 는 사용자 이름과 비밀 번 호 를 어떻게 설정 합 니까?
/***
* activeMQ
* @param BROKER_URL
* @param clientId : , ios device token
* @param TOPIC
* @param isCleanSession :false-- ;
* @return
*/
private boolean connect(String BROKER_URL,String clientId,String TOPIC,boolean isCleanSession){
try {
ComponentUtil.appendResult(resultTextPane, "connect time:"+TimeHWUtil.getCurrentMiniuteSecond(), true);
mqttClient = new MqttClient(BROKER_URL, clientId, new MemoryPersistence());
MqttConnectOptions options= new MqttConnectOptions();
options.setCleanSession(isCleanSession);//mqtt receive offline message
ComponentUtil.appendResult(resultTextPane, "isCleanSession:"+isCleanSession, true);
options.setKeepAliveInterval(30);
String username=usernameTextField.getText();
String password=passwordTextField.getText();
if(ValueWidget.isNullOrEmpty(username)){
username=null;
}
if(ValueWidget.isNullOrEmpty(password)){
password=null;
}else{
options.setPassword(password.toCharArray());
}
options.setUserName(username);
// , ,
mqttClient.setCallback(new MyCallBack(MqttClientSwing.this));
boolean isSuccess=false;
try {
mqttClient.connect(options);//CLIENT ID CAN NOT BE SAME
isSuccess=true;
} catch (Exception e) {
if(isPrintException){
e.printStackTrace();
}
}
if(!isSuccess){
String message=" , client id activeMQ ";
ComponentUtil.appendResult(resultTextPane, message, true);
GUIUtil23.warningDialog(message);
return false;
}else{
//Subscribe to topics
mqttClient.subscribe(new String[]{TOPIC,clientId});
System.out.println("topic:"+TOPIC+", "+(clientId));
ComponentUtil.appendResult(resultTextPane, "TOPIC:"+TOPIC+", "+(clientId), true);
}
} catch (MqttException e) {
if(isPrintException){
e.printStackTrace();}
GUIUtil23.errorDialog(e.getMessage());
return false;
}
return true;
}
(3)게시 자 는 비밀 번 호 를 어떻게 설정 합 니까?
/**
* connection session
*
* @throws Exception
*/
private void init(/* String mqIp,boolean transacted */) throws Exception {
if (!DialogUtil.verifyTFEmpty(serverIpTextField, " ip")) {
return;
}
String transactedStr = transactedTextField.getText();
boolean transacted = false;
if (ValueWidget.isNullOrEmpty(transactedStr)) {
transacted = false;
} else {
transacted = Boolean.parseBoolean(transactedStr);
}
String message = "transacted:" + transacted;
ComponentUtil.appendResult(resultTextArea, message, false);
// System.out.println(message);
String brokerUrl = String.format(BROKER_URL,
serverIpTextField.getText());
String username=usernameTextField.getText();
String password=passwordTextField.getText();
if(ValueWidget.isNullOrEmpty(username)){
username=null;
}
if(ValueWidget.isNullOrEmpty(password)){
password=null;
}
//
TopicConnectionFactory factory = new ActiveMQConnectionFactory(
username,
password, brokerUrl);
ComponentUtil.appendResult(resultTextArea, "activeMQ url:" + brokerUrl,
true);
//
connection = factory.createTopicConnection();
//
connection.start();
ComponentUtil.appendResult(resultTextArea, " connection ", true);
// session transacted
session = connection.createTopicSession(
transacted /* Boolean.FALSE */, Session.AUTO_ACKNOWLEDGE);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activeMQ의 질문오늘은 mule로 activeMQ와 통합할 때, mule를 시작할 때 항상 activeMQ의 시작에 머물러 있습니다.원본 코드를 보니 active MQ에 사순환이 생겼습니다. 위의 코드에서dolock은 시종일관fal...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.