ActiveMQ_topic使用

你的名字 2022-05-27 09:15 246阅读 0赞

注意:消息发布后若没有调用者不保存在服务器。有相应持久化方法

一、发送:

  1. @Test
  2. public void addTopic() throws Exception{
  3. //创建 一个连接工厂对象,需要指定服务的IP和端口号(默认:61616)
  4. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.134:61616");
  5. //使用工厂对象创建一个connection对象
  6. Connection connection = connectionFactory.createConnection();
  7. //开启连接,调用connection对象的start方法
  8. connection.start();
  9. //创建session对象,其中有两个参数:第一个参数:是否开启事务,如果为true,开启,第二个参数无意义;
  10. //false,关闭,一般关闭;第二个参数,应答模式:手动应答还是自动应答,一般自动应答
  11. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  12. //使用session对象创建一个Destination对象,两种形式:queue和topic
  13. Topic topic = session.createTopic("test_topic");
  14. //使用session对象创建一个producer对象
  15. MessageProducer createProducer = session.createProducer(topic);
  16. //创建一个message对象,key使用textMessage;两种创建方式
  17. /*TextMessage message = new ActiveMQTextMessage();
  18. message.setStringProperty("test", "hello");*/
  19. TextMessage message = session.createTextMessage("hello");
  20. //发送消息
  21. createProducer.send(message);
  22. //关闭资源
  23. createProducer.close();
  24. session.close();
  25. connection.close();
  26. }

二、接收:

  1. @Test
  2. public void consumerTopic() throws Exception{
  3. // 创建 一个连接工厂对象,需要指定服务的IP和端口号(默认:61616)
  4. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.134:61616");
  5. // 使用工厂对象创建一个connection对象
  6. Connection connection = connectionFactory.createConnection();
  7. // 开启连接,调用connection对象的start方法
  8. connection.start();
  9. // 创建session对象,其中有两个参数:第一个参数:是否开启事务,如果为true,开启,第二个参数无意义;
  10. // false,关闭,一般关闭;第二个参数,应答模式:手动应答还是自动应答,一般自动应答
  11. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  12. // 使用session对象创建一个Destination对象,两种形式:queue和topic
  13. Topic topic = session.createTopic("test_topic");
  14. // 使用session对象创建一个consumer对象
  15. MessageConsumer consumer = session.createConsumer(topic);
  16. //接收
  17. consumer.setMessageListener(new MessageListener() {
  18. @Override
  19. public void onMessage(Message message) {
  20. // TODO Auto-generated method stub
  21. TextMessage textMessage = (TextMessage)message;
  22. try {
  23. String text = textMessage.getText();
  24. System.out.println(text);
  25. } catch (JMSException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. }
  29. }
  30. });
  31. //等待接收
  32. System.in.read();
  33. //关闭资源
  34. consumer.close();
  35. session.close();
  36. connection.close();
  37. }

发表评论

表情:
评论列表 (有 0 条评论,246人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jmeter使用(jmeter使用流程)

    使用jmeter做性能测试脚本怎么写 如果只是简单的接口类的脚本,完全可以百度一下,然后照着别人的流程走,主要是注意各种配置和参数的意义就行了,这个其实没多大难度,比lo

    相关 SVN使用使用教程

    SVN使用使用教程 前言 本人在公司孤儿式开发,是用不到svn这种工具的,但是怕突然某一天电脑坏掉,代码消失所以还是使用上代码管理工具。 之前使用过svn工具,但

    相关 idea使用svn(日常使用)

    本文记录了svn的日常使用!!!非常详细!!!持续更新… 更新svn的项目到本地(一般是先更新再进行提交) ![在这里插入图片描述][watermark_type_