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);

	}

 

좋은 웹페이지 즐겨찾기