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


下面是我程序主要代碼
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);
? ? ? ?}
? ?}
2017-07-17
管理臺的端口和tcp連接的端口是不一樣的,默認管理臺的端口是8161,tcp連接端口是61616 你需要把兩個端口都-p出來