亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

ActiveMQ發送消息出現連接失效問題

最近玩起了Docker和ActiveMQ之后,想起可以在Docker中搭建一個ActiveMQ容器來運行ActiveMQ環境,當我費勁千辛終于搭建好了容器之后,我照著老師的代碼做了一遍,發現出現了連接失敗問題,起初我以為是我的容器端口映射出現了問題,我在本地連接容器是完全沒有問題的,然后我翻閱ActiveMQ的文檔發現使用的傳送協議是TCP協議,我有回頭將容器的TCP協議端口打開了,發現還是不行,請大家幫我看看是哪里出現了問題。

http://img1.sycdn.imooc.com//596ccb630001431311210432.jpg

http://img1.sycdn.imooc.com//596ccb640001e11213320430.jpg

下面是我程序主要代碼

private static final String MQ_USER = ActiveMQConnection.DEFAULT_USER;

? ?private static final String MQ_PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;

? ?private static final String MQ_ADDRESS = "tcp://192.168.1.106:32769";

? ?private static final int SEND_NUMBER = 50;

? ?public static void main(String[] args){
? ? ? ?Connection connection = null;
? ? ? ?Session session = null;
? ? ? ?try {
? ? ? ? ? ?ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
? ? ? ? ? ? ? ? ? ?MQ_USER, MQ_PASSWORD, MQ_ADDRESS);
? ? ? ? ? ?connection = connectionFactory.createConnection();
? ? ? ? ? ?connection.start();
? ? ? ? ? ?session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
? ? ? ? ? ?//消息接受者,消息發送目的地
? ? ? ? ? ?Destination destination = session.createQueue("testSendQueue1");
? ? ? ? ? ?//消息發送者
? ? ? ? ? ?MessageProducer producer = session.createProducer(destination);
? ? ? ? ? ?//不進行持久化
// ? ? ? ? ? ?producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
? ? ? ? ? ?sendMessage(session, producer);
? ? ? ? ? ?session.commit();
? ? ? ?} catch (JMSException e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?} catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ?} finally {
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?if(session != null){
? ? ? ? ? ? ? ? ? ?session.close();
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?if(connection != null){
? ? ? ? ? ? ? ? ? ?connection.close();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?} catch (JMSException e) {
? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ?}
? ? ? ?}
? ?}

? ?public static void sendMessage(Session session, MessageProducer producer)
? ? ? ? ? ?throws Exception {
? ? ? ?for (int i = 1; i <= SEND_NUMBER; i++) {
? ? ? ? ? ?TextMessage message = session
? ? ? ? ? ? ? ? ? ?.createTextMessage("ActiveMq 發送的消息" + i);
? ? ? ? ? ?// 發送消息到目的地方
? ? ? ? ? ?System.out.println("發送消息:" + "ActiveMq 發送的消息 : " + i);
? ? ? ? ? ?producer.send(message);
? ? ? ?}
? ?}

正在回答

1 回答

管理臺的端口和tcp連接的端口是不一樣的,默認管理臺的端口是8161,tcp連接端口是61616 你需要把兩個端口都-p出來

0 回復 有任何疑惑可以回復我~
#1

小丑魚yang 提問者

原本我是已經關閉了虛擬機準備洗洗睡了,老師你這一句話提醒了我,這正是忽略的一個小細節,我又重新運行容器查詢其端口發現確實有一個8161的端口映射了,然后我更改了我在代碼中設置的端口的確成功了,謝謝老師。
2017-07-17 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

ActiveMQ發送消息出現連接失效問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號