Java中间消息件ActiveMQ使用实例

作者:小鱼吃猫 时间:2021-10-10 14:24:21 

先来说一说我们为什么要用这个东西啊!

比如,我们现在有这样了个问题要解决:

Java中间消息件ActiveMQ使用实例

这样,我们就要用到中间消息间了

Java中间消息件ActiveMQ使用实例

然后我们就说一下什么是中间消息间吧。

采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成。
Java中对Jms有了定义,这是Java消息的统一接口。什么是ActiveMq呢?这是这个接口的一种实现,相当于数据库连接驱动一样,不同厂商有自己不同的实现,我们尽快看怎么用代码实现吧。

消息一共有两种接收和发送形式:点对点和发布定阅模式,也就是“一对一”和“一对多”。

1.导包(maven):


 <dependency>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-client</artifactId>
     <version>5.13.4</version>
   </dependency>

2.开始写类,提供者(发送者)和消费者(接收者)是两个不同的项目,我们先创建普通的maven项目,而不是web项目点对点的方式(消息只能被消费一次,如果同时有多个消费者,谁先抢到就是谁的)

消息提供者


public static void main(String[] args) throws JMSException {

//创建连接工厂,这个参数就是自己的activeMQ的地址
   ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

//2.创建连接
   Connection connection = connectionFactory.createConnection();

//3.启动连接
   connection.start();

//4.获取session(会话对象)
   /*
   arg0 是否启用事务
   arg1 消息的确认方式 自动确认
    */
   Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//5.创建一个队列对象,名称
   Queue firstQueue = session.createQueue("firstQueue");

//6.创建一个消息的生产者对象
//    Destination destination = ;//目标对象
   MessageProducer producer = session.createProducer(firstQueue);

//7.创建一个消息
   TextMessage textMessage = session.createTextMessage("欢迎来到奇的天喻软件");

//8.发送消息
   producer.send(textMessage);
   //9.关闭资源
   producer.close();
   session.close();
   connection.close();

}

消息消费者

前几步是一样的,都是创建连接,只有第6步不一样,创建的是一个消费者


public static void main(String[] args) throws JMSException, IOException {
   ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

//2.创建连接
   Connection connection = connectionFactory.createConnection();

//3.启动连接
   connection.start();

//4.获取session(会话对象)
   /*
   arg0 是否启用事务
   arg1 消息的确认方式 自动确认
    */
   Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//5.创建一个队列对象,名称
   Queue firstQueue = session.createQueue("firstQueue");

//6.创建消息消费者对象
   MessageConsumer consumer = session.createConsumer(firstQueue);

//7.设置监听
   consumer.setMessageListener(new MessageListener() {
     @Override
     public void onMessage(Message message) {
       TextMessage textMessage = (TextMessage)message;
       try {
         System.out.println("提取的消息是"+textMessage.getText());
       } catch (JMSException e) {
         e.printStackTrace();
       }
     }
   });

//8.等待键盘输入
   //目的是为了让程序停止来看效果
   System.in.read();

//9.关闭资源
   consumer.close();
   session.close();
   connection.close();
 }

发布订阅模式(发布消息后,只有在之前运行的消费者才能收到,消息被任何一个消费者消费后,以后启动的消费者不能消费之前的消息)

消息提供者


//创建连接工厂
   ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

//2.创建连接
   Connection connection = connectionFactory.createConnection();

//3.启动连接
   connection.start();

//4.获取session(会话对象)
   /*
   arg0 是否启用事务
   arg1 消息的确认方式 自动确认
    */
   Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//5
   Topic topic = session.createTopic("first-topic");

//6.创建一个消息的生产者对象
//    Destination destination = ;//目标对象
   MessageProducer producer = session.createProducer(topic);

//7.创建一个消息
   TextMessage textMessage = session.createTextMessage("欢迎来到奇的天喻软件");

//8.发送消息
   producer.send(textMessage);

//9.关闭资源
   producer.close();
   session.close();
   connection.close();

消费者


   ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

//2.创建连接
   Connection connection = connectionFactory.createConnection();

//3.启动连接
   connection.start();

//4.获取session(会话对象)
   /*
   arg0 是否启用事务
   arg1 消息的确认方式 自动确认
    */
   Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//5
   Topic topic = session.createTopic("first-topic");

//6.创建消息消费者对象
   MessageConsumer consumer = session.createConsumer(topic);

//7.设置监听
   consumer.setMessageListener(new MessageListener() {
     @Override
     public void onMessage(Message message) {
       TextMessage textMessage = (TextMessage)message;
       try {
         System.out.println("提取的消息是"+textMessage.getText());
       } catch (JMSException e) {
         e.printStackTrace();
       }
     }
   });
   //8.等待键盘输入
   //目的是为了让程序停止来看效果
   System.in.read();
   //9.关闭资源
   consumer.close();
   session.close();
   connection.close();

总结,是不是发现上边代码都很相似,那么完全可以用Spring来管理了啊

来源:https://www.cnblogs.com/Lyn4ever/p/11594830.html

标签:java,中间,消息,件,activemq
0
投稿

猜你喜欢

  • Spring中自动装配的4种方式

    2021-08-01 16:44:41
  • Java生成动态版验证码的方法实例

    2023-08-26 03:53:08
  • java数据结构和算法学习之汉诺塔示例

    2021-09-28 14:46:18
  • 实例讲解Android中ViewPager组件的一些进阶使用技巧

    2023-03-02 01:02:54
  • 通过代码快速理解Java的三种代理模式

    2023-03-28 01:13:57
  • Android View背景选择器编写技巧

    2023-09-16 21:37:43
  • 详解android在mob平台实现qq登陆和分享

    2022-04-03 08:02:26
  • 解决java.util.NoSuchElementException异常的问题

    2023-02-10 08:26:46
  • Java创建多线程的两种方式对比

    2023-09-14 21:02:49
  • 一文详解Spring security框架的使用

    2023-06-03 22:42:09
  • StreamAPI多次消费一个stream代码实例

    2023-10-15 19:44:09
  • Flutter 仿微信支付界面

    2023-08-30 01:31:53
  • Android开发使用Handler的PostDelayed方法实现图片轮播功能

    2023-10-20 04:37:42
  • 关于jdk9、jdk10、jdk11、jdk12、jdk13新特性说明

    2021-07-19 17:06:34
  • Android开发之开关按钮控件ToggleButton简单用法示例

    2022-12-30 22:05:43
  • java如何获取map中value的最大值

    2023-04-11 05:12:04
  • java转树形结构工具类详解

    2021-07-26 04:00:08
  • Java 多线程并发ReentrantLock

    2022-02-23 11:53:23
  • Win10系统下配置java环境变量的全过程

    2023-10-13 12:09:50
  • Java魔法堂之调用外部程序的方法

    2023-11-09 07:14:16
  • asp之家 软件编程 m.aspxhome.com