activeMQ的consumer添加MessageListener运行没效果

解决方法:关闭资源前,添加 System.in.read() ,否则还没来得及消费,程序就结束了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要监听 ActiveMQ 中的 ByteMessage,可以使用 JMS API 中的 MessageListener 接口。以下是一个示例代码: ```java import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class ByteMessageListener implements MessageListener { public void onMessage(Message message) { try { if (message instanceof BytesMessage) { BytesMessage bytesMessage = (BytesMessage) message; byte[] bytes = new byte[(int) bytesMessage.getBodyLength()]; bytesMessage.readBytes(bytes); String text = new String(bytes); System.out.println("Received message: " + text); } else { System.out.println("Received message: " + message); } } catch (JMSException e) { e.printStackTrace(); } } public static void main(String[] args) throws JMSException { String brokerUrl = "tcp://localhost:61616"; ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("test.queue"); MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(new ByteMessageListener()); System.out.println("Waiting for messages..."); } } ``` 在这个示例中,我们创建了一个 ActiveMQConnectionFactory 对象,并使用它创建了一个连接和会话。然后我们创建了一个消息消费者,并将其设置为 MessageListener 接口的实现,以便在收到消息时调用 onMessage 方法。在 onMessage 方法中,我们首先检查收到的消息是否是 BytesMessage 类型,如果是,则读取消息中的字节数组,并将其转换为字符串。最后,我们打印出收到的消息内容。 请注意,由于我们使用了 MessageListener 接口,因此在创建消费者时不需要调用 receive 方法。相反,我们只需要等待消息到达,然后 onMessage 方法将自动被调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值