让两只Wildflies使用JMS和MDB进行通信

时间:2015-02-12 12:21:18

标签: java ejb jms message-queue wildfly

我有以下情况,我无法开始工作: 我希望有两个野生动物运行,一个生成消息并将它们发送到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,用于配置第二个野生动物。

所以,问题是:第二台服务器没有反应,所以我假设,我有一些配置错误,所以第二台服务器没有连接到队列。

但就像我说的那样,我找不到任何有关消息传递配置的好教程,所以如果有人有,那么它会有很多帮助。

0 个答案:

没有答案