我有以下情况,我无法开始工作: 我希望有两个野生动物运行,一个生成消息并将它们发送到JMS队列,另一个使用消息驱动的bean消耗这些消息。 消息生成器是一个restful Service,它使用以下无状态会话bean来发送由GET触发的消息。
import javax.ejb.Stateless;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* Session Bean implementation class MessageBean
*/
@Stateless
public class MessageBean implements MessageService {
Destination destination;
ConnectionFactory connectionFactory;
public MessageBean() {
}
@Override
public void sendMessage() {
try {
Context context = new InitialContext();
//Lookup the Queue
destination = (Destination) context.lookup("jms/queue/MessagingQueue");
//Lookup the ConnectionFacory
connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");
//Build connection
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(destination);
ObjectMessage m = session.createObjectMessage();
String x = "Hello World";
m.setObject(x);
//Send message
producer.send(m);
session.close();
producer.close();
connection.close();
} catch (NamingException | JMSException e) {
e.printStackTrace();
}
}
}
我还将MessagingQueue
添加到standalone-full.xml,我用它来运行用于生成消息的wildfly。
这是通过
<jms-destinations>
<jms-queue name="MessagingQueue">
<entry name="jms/queue/MessagingQueue"/>
<entry name="java:jboss/exported/jms/queue/MessagingQueue"/>
</jms-queue>
</jms-destinations>
hornetq-server
部分中的。 这个&#34;似乎&#34;但是,我不确定,如果我需要在stadalone-full.xml中进行更多配置,因为我找不到好的教程,而且我对开发服务器 - 客户端的东西还是比较陌生的
在第二个wilfly上我有以下MDB:
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/queue/MessagingQueue"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
},
mappedName = "jms/queue/MessagingQueue")
public class MessageReceiverBean implements MessageListener {
public void onMessage(Message message) {
System.out.println("Received message "+message);
}
}
此处,MessagingQueue
也被添加到standalone-full.xml,用于配置第二个野生动物。
所以,问题是:第二台服务器没有反应,所以我假设,我有一些配置错误,所以第二台服务器没有连接到队列。
但就像我说的那样,我找不到任何有关消息传递配置的好教程,所以如果有人有,那么它会有很多帮助。