ActiveMQ教程(2)— 在ActiveMQ中传递Stomp消息简单代码示例

标签: Stomp ActiveMQ
10人阅读 评论(0) 收藏 举报
分类:

下面我们使用ActiveMQ提供的JAVA 客户端(实际上就是ActiveMQ对JMS规范的实现),向ActiveMQ中的Queue(示例代码中将这个Queue命名为’test’)发送一条Stomp协议消息,然后再使用JAVA语言的客户端,从ActiveMQ上接受这条消息:

使用ActiveMQ的API发送Stomp协议消息:
package mq.test.stomp;

import java.net.Socket;

import org.apache.activemq.transport.stomp.StompConnection;

// 消息生产者
public class TestProducer {
    public static void main(String[] args) {
        try {
            // 建立Stomp协议的连接
            StompConnection con = new StompConnection();
            Socket so = new Socket("192.168.1.128", 61613);
            con.open(so);
            // 注意,协议版本可以是1.2,也可以是1.1
            con.setVersion("1.2");
            // 用户名和密码,这个不必多说了
            con.connect("admin", "admin");

            // 以下发送一条信息(您也可以使用“事务”方式)
            con.send("/test", "生产者发送的消息");
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
    }
}
使用ActiveMQ的API接收Stomp协议消息:
package mq.test.stomp;

import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.Map;

import org.apache.activemq.transport.stomp.StompConnection;
import org.apache.activemq.transport.stomp.StompFrame;

public class TestConsumer {
    public static void main(String[] args) throws Exception {
        // 建立连接
        StompConnection con = new StompConnection();
        Socket so = new Socket("192.168.1.128", 61613);
        con.open(so);
        con.setVersion("1.2");
        con.connect("admin", "admin");

        String ack = "client";
        con.subscribe("/test", "client");
        // 接受消息(使用循环进行)
        for (;;) {
            StompFrame frame = null;
            try {
                // 注意,如果没有接收到消息,
                // 这个消费者线程会停在这里,直到本次等待超时
                frame = con.receive();
            } catch (SocketTimeoutException e) {
                continue;
            }

            // 打印本次接收到的消息
            System.out.println("frame.getAction() = " + frame.getAction());
            Map<String, String> headers = frame.getHeaders();
            String meesage_id = headers.get("message-id");
            System.out.println("frame.getBody() = " + frame.getBody());
            System.out.println("frame.getCommandId() = " + frame.getCommandId());

            // 在ack是client标记的情况下,确认消息
            if ("client".equals(ack)) {
                con.ack(meesage_id);
            }
        }
    }
}

以上分别是使用Activie提供的Stomp协议的消息生产端和Stomp协议的消息消费端的代码。请注意在代码片段中,并没有出现任何一个带有jms名称的包或者类——这是因为ActiveMQ为Stomp协议提供的JAVA API在内部进行了JMS规范的封装。

您可以查看activemq-stomp中关于协议转换部分的源代码:org.apache.activemq.transport.stomp.JmsFrameTranslator和其父级接口:org.apache.activemq.transport.stomp.FrameTranslator来验证这件事情。

以下是Stomp协议的消费者端的运行效果(在生产者端已经向ActiveMQ插入了一条消息之后):

frame.getAction() = MESSAGE
frame.getBody() = 生产者发送的消息
frame.getCommandId() = 0
查看评论

[中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用

随着互联网企业业务量的不断扩大,企业信息网络系统的愈加复杂,性能问题也就越来越凸显出来,串行的业务处理方式显然已经成为主要的瓶颈,我们需要更多异步的并行处理来提高企业信息系统的业务处理能力,因此独立的...
  • mecho
  • mecho
  • 2014-02-19 12:04:03
  • 4757

ActiveMQ - stomp 协议接收消息

/** * 基于stomp协议接收JMS消息 * @param args 参数 */ @SuppressWarnings("unchecked") pub...
  • dyccsxg
  • dyccsxg
  • 2013-06-09 18:58:22
  • 1838

ActiveMQ - stomp 协议发送消息

/** * 基于stomp协议发送JMS消息 * @param args 参数 */ public static void main(String[] args)...
  • dyccsxg
  • dyccsxg
  • 2013-06-09 18:56:32
  • 2079

Activemq 使用Stomp方式接收、过滤 topic 数据

因业务需要,本人在测试机上部署了一个activemq。突然奇想 要用 Stomp方式请求 TOPIC 数据。 打开activemq stomp 文档,发现内容十分的节省啊,不过还好给了两个demo....
  • liduanpeng02
  • liduanpeng02
  • 2015-12-18 11:30:46
  • 720

python使用stomp连接activemq

python使用stomp连接activemq        本篇内容为大家提供的是python使用stomp连接activemq和stomp简介,详细而全面,感兴趣的朋友,可以参考学习一下。 ...
  • hayaqi0504
  • hayaqi0504
  • 2016-07-05 16:41:30
  • 5815

消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用

原文链接:http://blog.csdn.net/shagoo/article/details/6077686 随着互联网企业业务量的不断扩大,企业信息网络系统的愈加复杂,性能问题也就越来...
  • design321
  • design321
  • 2013-01-28 11:56:41
  • 906

python+stomp+activemq

python也可以连接MQ,以ActiveMQ为例,安装stomp.py: https://github.com/jasonrbriggs/stomp.py 下载后安装: python setu...
  • varyall
  • varyall
  • 2015-12-10 17:26:19
  • 3265

JMS消息传送机制ActiveMQ

JMS(Java Message Service) 消息服务是一个面向消息中间件(MOM)的API,用于在两个应用程序之间,或者分布式系统中发送消息消费消息,进行异步通信,数据交互。JMS提供的API...
  • manmanxiaohui
  • manmanxiaohui
  • 2016-10-11 21:54:11
  • 1698

ActiveMQ + NodeJS + Stomp 极简入门

前提 安装ActiveMQ和Nodejs测试步骤1.执行bin\win32\activemq.bat启动MQ服务2. 打开http://localhost:8161/admin/topics.jsp用...
  • mythma
  • mythma
  • 2016-01-30 17:14:01
  • 6641

activeMQ 与 php的结合使用

1、首先需要安装stomp的php扩展,如下文件支持php5.6版本: 将该文件放入php的扩展库ext文件夹中。 2、在php.ini中加入扩展配置:extension=php...
  • u012158564
  • u012158564
  • 2016-10-31 11:48:49
  • 3503
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 2万+
    积分: 1944
    排名: 2万+
    博客专栏
    文章存档
    最新评论