[英]Not receiving message from producer using ActiveMQ VM Transport
我現在正在使用activeMQ tcp // localhost URL安靜一段時間,我對此沒有問題。 當前,我正在嘗試使用“ vm // localhost ”連接器,但是在接收來自生產者的消息時遇到問題。 我使用的是彈簧靴,生產者和消費者都在不同的罐子里。 我的消費者收到空消息。 我想念什么嗎? 下面是我的代碼(取自apache網站)。 提前致謝
Producer.jar
ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory("vm://localhost");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("TEST.FOO");
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
String text = "Hello world! From: " + Thread.currentThread().getName() + " : " + this.hashCode();
TextMessage message = session.createTextMessage(text);
System.out.println("Sent message: " + message.hashCode() + " : " + Thread.currentThread().getName());
producer.send(message);
session.close();
connection.close();
Consumer.jar
ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory("vm://localhost");
Connection connection = connectionFactory.createConnection();
connection.start();
connection.setExceptionListener(this);
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("TEST.FOO");
MessageConsumer consumer = session.createConsumer(destination);
// Wait for a message
Message message = consumer.receive(10000);
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
System.out.println("Received 1: " + text);
} else {
System.out.println("Received 2: " + message);
}
consumer.close();
session.close();
connection.close();
我確定,虛擬機是虛擬機內部的傳輸方式! 因此無法解決,因此解決方案是2個客戶端之一需要使用vm transport,而另一個tcp和ActiveMQ是在其中一個使用vm transport啟動的,或者將2個組件嵌入同一VM中。
查看相同用例的另一個答案如何在兩個應用程序都使用嵌入式activemq時將Jms消息從一個Spring Boot應用程序發送到另一個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.