即时通讯-测试ActiveMQ服务器

这篇文章是居于前面的几篇博客,如果还不知道ActiveMQ服务器的请看:即时通讯-ActiveMQ环境搭建

基本流程

按照JMS的规范,我们首先需要获得一个JMS connection factory.,通过这个connection factory来创建connection.在这个基础之上我们再创建session, destination, producer和consumer。因此主要的几个步骤如下:

1. 获得JMS connection factory. 通过我们提供特定环境的连接信息来构造factory。

2. 利用factory构造JMS connection

3. 启动connection

4. 通过connection创建JMS session.

5. 指定JMS destination.

6. 创建JMS producer或者创建JMS message并提供destination.

7. 创建JMS consumer或注册JMS message listener.

8. 发送和接收JMS message.

9. 关闭所有JMS资源,包括connection, session, producer, consumer等。

注意:测试案例使用默认的协议:OpenWire,而不是MQTT协议

1.测试点对点通讯

1.新建一个java项目:

2.导入jar:

将下面的那个activemq-all-5.14.1.jar包导入我们的java项目中。

3.新建一个生产者Sender:

Sender代码:

    /**
     * 1.创建连接工厂
     * 
     * 2.启动连接
     * 
     * 3.创建会话
     * 
     * 4.创建消息发送者
     * 
     * 5.创建并发送消息
     * 
     * 6.关闭会话
     * 
     * @author Administrator
     *
     */
    public class Sender {
     

       private static final int SEND_NUMBER = 5;  

       public static void main(String[] args) {  
           String a = null;
           // ConnectionFactory :连接工厂,JMS 用它创建连接  
           ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS  
           // Provider 的连接  
           Connection connection = null; // Session: 一个发送或接收消息的线程  
           Session session; // Destination :消息的目的地;消息发送给谁.  
           Destination destination; // MessageProducer:消息发送者  
           MessageProducer producer; // TextMessage message;  
           // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar  
           connectionFactory = new ActiveMQConnectionFactory(  
                   null,  
                   null, "tcp://localhost:61616");  
           try { // 构造从工厂得到连接对象  
               connection = connectionFactory.createConnection();  
               // 启动  
               connection.start();  

               String clientID = connection.getClientID();
               System.out.println("sender="+clientID);
               // 获取操作连接  
               session = connection.createSession(Boolean.TRUE,  
                       Session.AUTO_ACKNOWLEDGE);  
               // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置  
               destination = session.createQueue("FirstQueue");

               // 得到消息生成者【发送者】  
               producer = session.createProducer(destination);  
               // 设置不持久化,此处学习,实际根据项目决定  
               producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);  
               // 构造消息,此处写死,项目就是参数,或者方法获取  
               sendMessage(session, producer);  
               session.commit();  
           } catch (Exception e) {  
               e.printStackTrace();  
           } finally {  
               try {  
                   if (null != connection)  
                       connection.close();  
               } catch (Throwable ignore) {  
               }  
           }  
       }  

       public static void sendMessage(Session session, MessageProducer producer)  
               throws Exception {  
           for (int i = 1; i <= SEND_NUMBER; i++) {  
               TextMessage message = session.createTextMessage(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值