ActiviteMQ- 按照此例子手写了Demo

demo地址: https://blog.csdn.net/a639735331/article/details/72594194

所需各要素:
1、首先要有连接的工厂、用来创建连接

      ConnectionFactory connectionFactory

2、 连接所需的对象

        // 客户端 与 jms procuder 的连接  
   Connection  conn  = null ; 

3、发送与接收消息的线程

    // 一个发送或接收消息的线程
        Session session 

4、队列

    // 队列    - 消息的存放地 
        Destination destination

等等。

访问-管理与观察队列的平台:http://localhost:8161/

ActiviteMQ- 按照此例子手写了Demo_第1张图片
微信图片_20180918172123.png

如果想要管理队列,需要输入账户密码分别为为: admin/admin

maven项目 需要依赖包:


   org.apache.activemq
   activemq-all
   5.15.3

其中需要知晓的消息发送方:
虽然调用了 send(message) 方法,
但是真正的提交发送为 session.commit();

贴上代码:
发送端:

/**
 * 
 */
package com.william_wei.activitymq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

/** 
 * Description: 
 * @author xhw
 * @version 1.0
 * 
 * Modification History: 
 * Date         Author      Version     Description 
------------------------------------------------------------------
 * 2018年9月18日    xhw  1.0        1.0 Version 
 * 
*/ public class Sender { public static void main(String[] args) { //连接工厂 jms 用他 创建 连接 ConnectionFactory connectionFactory ; // 客户端 与 jms procuder 的连接 Connection conn = null ; // 一个发送或接收消息的线程 Session session ; // 队列 - 消息的存放地 Destination destination ; // 消息发送者 MessageProducer messageProducer; connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD , "tcp://localhost:61616"); try { conn = connectionFactory.createConnection() ; conn.start(); // 创建 消息 通讯的 线程 session = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //创建队列 destination = session.createQueue("FirstQueue"); // 传将发送消息这 messageProducer = session.createProducer(destination); // 设置 不持久化 随实际项目而定 messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // 封装的发送信息的方法 sendMessage( session,messageProducer ); // 提交消息发送请求 session.commit(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { conn.close(); } catch (JMSException e) { e.printStackTrace(); } } } /** * @throws JMSException * */ public static void sendMessage(Session session , MessageProducer messageProducer) throws JMSException{ for (int i = 0; i < 5; i++) { TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i ); // 发送消息到目的地方 System.out.println("发送消息:" + "ActiveMq 发送的消息" + i); messageProducer.send(message); } } }

消费端:

/**
 * 
 */
package com.william_wei.activitymq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.Message;

/** 
 * Description: 
 * @author xuhongwei
 * @version 1.0
 * 
 * Modification History: 
 * Date         Author      Version     Description 
------------------------------------------------------------------
 * 2018年9月18日    xuhongwei     1.0        1.0 Version 
 * 
*/ public class Receiver { public static void main(String[] args) { // ConnectionFactory :连接工厂,JMS 用它创建连接 ConnectionFactory connectionFactory ; //Connection :JMS 客户端到JMS Provider 的连接 Connection conn = null ; // Session: 一个发送或接收消息的线程 Session session; // Destination :消息队列 消息的获取地 Destination destination; // 消息 接收者 MessageConsumer consumer; connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); try { //创建连接 conn = connectionFactory.createConnection(); // 开始连接 conn.start(); // 创建回话 session = conn.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 获取队列 注意参数值FirstQueue是一个服务器的queue,须在在ActiveMq的console配 destination = session.createQueue("FirstQueue"); consumer = session.createConsumer(destination); while(true){ TextMessage message = (TextMessage) consumer.receive(); if(message !=null ){ System.out.println("收到消息" + message.getText()); }else{ break; } } } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { conn.close(); } catch (JMSException e) { e.printStackTrace(); } } } }

你可能感兴趣的:(ActiviteMQ- 按照此例子手写了Demo)