一、添加 jar 包

<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.11.2</version>
</dependency>

二、消息传递的两种形式

  1、点对点:发送的消息只能被一个消费者接收,第一个消费者接收后,消息没了

  2、发布/订阅:消息可以被多个消费者接收 。发完消息,如果没有消费者接收,这消息会自动消失。也就是说,消费者服务必须是启动的状态。( topic 消息在 ActiveMQ 服务端默认不是持久化的,可以通过配置文件配置持久化 )

三、点对点发送消息

/*** 点到点形式发送消息* @throws Exception*/
@Test
public void testQueueProducer() throws Exception{//1、创建一个连接工厂,需要指定服务的 ip 和端口String brokerURL = "tcp://192.168.25.129:61616";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);//2、使用工厂对象创建一个 Connection 对象Connection connection = connectionFactory.createConnection();//3、开启连接,调用 Connection 对象的 start 方法
    connection.start();//4、创建一个 Session 对象。//第一个参数:是否开启事务(一般不开启,如果开启事务,第二个参数没意义);//第二个参数:应答模式。自动应答或者手动应答,一般是自动应答Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5、使用 Session 对象创建一个 Destination 对象。两种形式 queue、topic。Queue queue = session.createQueue("test-queue");//6、使用 Session 对象创建一个 Producer 对象MessageProducer producer = session.createProducer(queue);//7、创建一个 Message 对象,可以使用 TextMessage。下面两种方式都可以/*TextMessage textMessage = new ActiveMQTextMessage(); textMessage.setText("hello ActiveMQ");*/TextMessage textMessage = session.createTextMessage("hello ActiveMQ");//8、发布消息
    producer.send(textMessage);//9、关闭资源
    producer.close();session.close();connection.close();
}

四、点对点接收消息

/*** 点对点接收消息* @throws Exception*/
@Test
public void testQueueConsumer() throws Exception{//1、创建一个 ConnectionFactory 对象连接 MQ 服务器String brokerURL = "tcp://192.168.25.129:61616";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);//2、创建一个连接对象Connection connection = connectionFactory.createConnection();//3、开启连接
    connection.start();//4、使用 Connection 对象 创建一个 Session 对象Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5、创建一个 Destination 对象。queue 对象Queue queue = session.createQueue("test-queue");//6、使用 Session 对象创建一个消费者MessageConsumer consumer = session.createConsumer(queue);//7、接收消息consumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message message) {//8、打印结果TextMessage textMessage = (TextMessage) message;try {String text = textMessage.getText();System.out.println(text);} catch (JMSException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}});//9、等待接收消息。( 接收到消息后才网下面执行。关闭资源 )
    System.in.read();//10、关闭资源
    consumer.close();session.close();connection.close();}

 五、广播发送消息

/*** 广播发送消息* @throws Exception*/
@Test
public void testTopicProducer() throws Exception{//1、创建一个连接工厂,需要指定服务的 ip 和端口String brokerURL = "tcp://192.168.25.129:61616";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);//2、使用工厂对象创建一个 Connection 对象Connection connection = connectionFactory.createConnection();//3、开启连接,调用 Connection 对象的 start 方法
    connection.start();//4、创建一个 Session 对象。//第一个参数:是否开启事务(一般不开启,如果开启事务,第二个参数没意义);//第二个参数:应答模式。自动应答或者手动应答,一般是自动应答Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5、使用 Session 对象创建一个 Destination 对象。两种形式 queue、topic。Topic topic = session.createTopic("test-topic");//6、使用 Session 对象创建一个 Producer 对象MessageProducer producer = session.createProducer(topic);//7、创建一个 Message 对象,可以使用 TextMessage。下面两种方式都可以/*TextMessage textMessage = new ActiveMQTextMessage(); textMessage.setText("hello ActiveMQ");*/TextMessage textMessage = session.createTextMessage("hello ActiveMQ");//8、发布消息
    producer.send(textMessage);//9、关闭资源
    producer.close();session.close();connection.close();
}

六、广播接收消息

/*** 广播接收消息* @throws Exception*/
@Test
public void testTopicConsumer() throws Exception{//1、创建一个 ConnectionFactory 对象连接 MQ 服务器String brokerURL = "tcp://192.168.25.129:61616";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);//2、创建一个连接对象Connection connection = connectionFactory.createConnection();//3、开启连接
    connection.start();//4、使用 Connection 对象 创建一个 Session 对象Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5、创建一个 Destination 对象。Topic 对象Topic topic = session.createTopic("test-topic");//6、使用 Session 对象创建一个消费者MessageConsumer consumer = session.createConsumer(topic);//7、接收消息consumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message message) {//8、打印结果TextMessage textMessage = (TextMessage) message;try {String text = textMessage.getText();System.out.println(text);} catch (JMSException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}});System.out.println("topic消费者");//9、等待接收消息。( 接收到消息后才网下面执行。关闭资源 )
    System.in.read();//10、关闭资源
    consumer.close();session.close();connection.close();
}

转载于:https://www.cnblogs.com/fangwu/p/8669036.html

ActiveMQ 发送和接收消息相关推荐

  1. 【译】 WebSocket 协议第六章——发送与接收消息(Sending and Receiving Data)

    概述 本文为 WebSocket 协议的第六章,本文翻译的主要内容为 WebSocket 消息发送与接收相关内容. 发送与接收消息(协议正文) 6.1 发送数据 为了通过 WebSocket 连接发送 ...

  2. activeMQ发送与接受消息模板代码

    发送着: /*** */ package activemqAPI.helloworld;import javax.jms.Connection; import javax.jms.Connection ...

  3. springboot websocket发送和接收消息代码资源下载

    客户端发送给服务端的消息,同时接收服务端响应给客户端的消息: 服务端收到客户端发送过来的消息,并响应给客户端消息:

  4. java mqtt客户端_java 实现mqtt发送和接收消息客户端具体用法及测试代码

    注:客户端代码实现请看我的上一篇 1mqtt发送消息 发送时不用多讲,每次发送肯定需要运行一次发送消息方法 MyMqttClient mqttClient = new MyMqttClient(); ...

  5. SpringAMQP发送与接收消息

    同步调用的优点:时效性较强,可以立即得到结果 同步调用的问题: 1.耦合度高 2.性能和吞吐能力下降 3.有额外的资源消耗 4.有级联失败问题 异步通信的优点: 1.耦合度低 2.吞吐量提升 3.故障 ...

  6. 通过kafka发送和接收消息

    生产者配置类: @Configuration @EnableKafka public class KafkaProducerConfig {@Value("${kafkaConfig.add ...

  7. PC微信逆向:发送与接收消息的分析与代码实现

    文章目录 定位微信的消息接收函数 定位消息接收函数的相关思路 定位消息内容的地址 分析接收消息函数 好友消息 群消息 总结 代码实现 定位微信的消息发送函数 定位消息发送函数的相关思路 过滤当前聊天窗 ...

  8. Netty:实现同步发送并接收消息的一种方式

    Netty创建通信服务时使用Nio异步通信, 配置代码(bootstrap.channel(NioSocketChannel.class);),要怎样实现这样一个同步发送消息并接收消息功能,虽然这样做 ...

  9. 游戏对象之间发送和接收消息

    1.创建一个游戏工程, 命名为SRMessageGo 2.在Project视图中创建3个文件夹, Scene文件夹.Resources文件夹和Script文件夹 3.将当前场景保存为GameScene ...

最新文章

  1. Android-PullLayout
  2. 一文读懂 K8s 持久化存储流程
  3. ES6-6 - this指向、箭头函数基本形式、rest运算符
  4. 设计模式适配器模式_21世纪的设计模式:适配器模式
  5. java ee打印功能_Java EE:异步构造和功能
  6. window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式
  7. ICCV2021 还在用大量数据暴力train模型?主动学习,教你选出数据集中最有价值的样本...
  8. 拥有一个高性能低延时数据库是什么样的体验?
  9. commit 规范性提交
  10. Java测试框架-junit5详解
  11. java大转盘抽奖概率算法_幸运大转盘抽奖 抽奖算法 程序实现逻辑
  12. 测试设计之状态转换图
  13. wow7.1 xd 新手教程
  14. flareghost(闪烁和光晕测试)
  15. SQL server 登录名与用户名
  16. 【人脸识别6】用haar+adaboost训练自己的人脸检测器
  17. S3C2440开发板裸机程序系列04—串口通信
  18. java的基本数据类型有哪些
  19. DAT NAT SAN FCoE
  20. AtCoder Beginner Contest 192

热门文章

  1. MFC中五个初始类的作用
  2. float型数据与字节数组的转化
  3. atm取款机的简单程序代码_LeNet:一个简单的卷积神经网络PyTorch实现
  4. 【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割
  5. hadoop 多机全分布式安装步骤(虚拟机1master+2slave)
  6. LeetCode 1383. 最大的团队表现值(贪心,优先队列,难)
  7. LeetCode 396. 旋转函数(数学)
  8. 公需科目必须学吗_专业技术人员一般公需科目学习的通知
  9. ClickHouse常见问题及其解决方案
  10. 聚类分析 - K-means - Python代码实现