【问题标题】:Send Message on embedded activeMQ message server in glassfish在 glassfish 中的嵌入式 activeMQ 消息服务器上发送消息
【发布时间】:2014-10-16 06:25:52
【问题描述】:

我开发了一个带有嵌入式 activeMQ 消息服务器的 Java EE 应用程序(在 GlassFish 上)。我可以向我的消息驱动 Bean 发送消息。现在我想通过我的 activeMQ 代理将消息发送回另一个主题。

没有消息传递到主题“answer”。我在 activeMQ-web-frontend 上看到它并且没有抛出异常。

我没有看到问题。谁能给我一个可以搜索的提示?

这是我的课程:

    @MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "amqmsg"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic") }, mappedName = "amqmsg")
@TransactionManagement(TransactionManagementType.BEAN)
public class TopicMB implements MessageListener {

    @Inject
    private MessageSender messageSender;
    private static final Logger logger = LoggerFactory.getLogger(TopicMB.class);

    public void onMessage(Message message) {

        messageLogger.log(message);
        try {
            messageSender.send("antwort");
        } catch (Exception e) {
            logger.error(e.getLocalizedMessage());
            e.printStackTrace();
        }

    }
}

还有我的 MessageSender。 amqpool 为 acitveMQ 注入连接器连接池。

@Stateless
public class MessageSender {

    private static final Logger logger = LoggerFactory
            .getLogger(MessageSender.class);

    @Resource(name = "amqpool")
    private ConnectionFactory connectionFactory;

    private static String subject = "answer";

    public void send(String text) throws JMSException {
        Connection connection = connectionFactory.createConnection();
        connection.start();

        Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);

        Destination destination = session.createTopic(subject);
        MessageProducer producer = session.createProducer(destination);
        producer.setDeliveryDelay(DeliveryMode.PERSISTENT);
        TextMessage message = session.createTextMessage("antwort");

        // Here we are sending the message!
        producer.send(message);

        session.close();

    }

}

【问题讨论】:

    标签: glassfish ejb jms activemq


    【解决方案1】:

    如果在网络控制台上看到该消息,则听起来主题上没有消费者。

    请注意,主题从不存储消息 - 订阅主题存储消息。非持久订阅(默认)仅在消费者连接并积极订阅主题时才处于活动状态。持久订阅可以在消费者未连接时保存消息。

    那么,消息发送到该主题时是否存在消费者,或者该主题上是否已注册持久订阅?

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 2012-11-10
      • 2015-03-28
      • 2012-12-18
      • 2013-10-06
      • 2012-09-10
      • 2021-08-20
      • 1970-01-01
      • 2011-12-14
      相关资源
      最近更新 更多