1. Activemq消息类型
    JMS规范中的消息类型包括TextMessageMapMessageObjectMessageBytesMessage、和StreamMessage等五种。ActiveMQ也有对应的实现,下面我们结合Spring JMS分别来看一下五种消息类型的收发代码。
  1. 1TextMessage
  1. /**
  2. * 向指定Destination发送text消息
  3. * @param destination
  4. * @param message
  5. */
  6. public void sendTxtMessage(Destination destination, final String message){
  7. if(null == destination){
  8. destination = jmsTemplate.getDefaultDestination();
  9. }
  10. jmsTemplate.send(destination, new MessageCreator() {
  11. public Message createMessage(Session session) throws JMSException {
  12. return session.createTextMessage(message);
  13. }
  14. });
  15. System.out.println("springJMS send text message...");
  16. }

2、MapMessage

  1. /**
  2. * 向指定Destination发送map消息
  3. * @param destination
  4. * @param message
  5. */
  6. public void sendMapMessage(Destination destination, final String message){
  7. if(null == destination){
  8. destination = jmsTemplate.getDefaultDestination();
  9. }
  10. jmsTemplate.send(destination, new MessageCreator() {
  11. public Message createMessage(Session session) throws JMSException {
  12. MapMessage mapMessage = session.createMapMessage();
  13. mapMessage.setString("msgId",message);
  14. return mapMessage;
  15. }
  16. });
  17. System.out.println("springJMS send map message...");
  18. }

3、ObjectMessage

  1. /**
  2. * 向指定Destination发送序列化的对象
  3. * @param destination
  4. * @param object object 必须序列化
  5. */
  6. public void sendObjectMessage(Destination destination, final Serializable object){
  7. if(null == destination){
  8. destination = jmsTemplate.getDefaultDestination();
  9. }
  10. jmsTemplate.send(destination, new MessageCreator() {
  11. public Message createMessage(Session session) throws JMSException {
  12. return session.createObjectMessage(object);
  13. }
  14. });
  15. System.out.println("springJMS send object message...");
  16. }

4、BytesMessage

  1. /**
  2. * 向指定Destination发送字节消息
  3. * @param destination
  4. * @param bytes
  5. */
  6. public void sendBytesMessage(Destination destination, final byte[] bytes){
  7. if(null == destination){
  8. destination = jmsTemplate.getDefaultDestination();
  9. }
  10. jmsTemplate.send(destination, new MessageCreator() {
  11. public Message createMessage(Session session) throws JMSException {
  12. BytesMessage bytesMessage = session.createBytesMessage();
  13. bytesMessage.writeBytes(bytes);
  14. return bytesMessage;
  15.  
  16. }
  17. });
  18. System.out.println("springJMS send bytes message...");
  19. }

5、streamMessage

  1. /**
  2. * 向默认队列发送Stream消息
  3. */
  4. public void sendStreamMessage(Destination destination) {
  5. jmsTemplate.send(new MessageCreator() {
  6. public Message createMessage(Session session) throws JMSException {
  7. StreamMessage message = session.createStreamMessage();
  8. message.writeString("stream string");
  9. message.writeInt(11111);
  10. return message;
  11. }
  12. });
  13. System.out.println("springJMS send Strem message...");
  14. }

消息接收处理

  1. /**
  2. * 根据消息类型进行对应的处理
  3. * @param destination 消息发送/接收共同的Destination
  4. * @throws JMSException
  5. */
  6. public void receive(Destination destination) throws JMSException {
  7. Message message = jmsTemplate.receive(destination);
  8.  
  9. // 如果是文本消息
  10. if (message instanceof TextMessage) {
  11. TextMessage tm = (TextMessage) message;
  12. System.out.println("from" + destination.toString() + " get textMessage:\t" + tm.getText());
  13. }
  14.  
  15. // 如果是Map消息
  16. if (message instanceof MapMessage) {
  17. MapMessage mm = (MapMessage) message;
  18. System.out.println("from" + destination.toString() + " get textMessage:\t" + mm.getString("msgId"));
  19. }
  20.  
  21. // 如果是Object消息
  22. if (message instanceof ObjectMessage) {
  23. ObjectMessage om = (ObjectMessage) message;
  24. ExampleUser exampleUser = (ExampleUser) om.getObject();
  25. System.out.println("from" + destination.toString() + " get ObjectMessage:\t"
  26. + ToStringBuilder.reflectionToString(exampleUser));
  27. }
  28.  
  29. // 如果是bytes消息
  30. if (message instanceof BytesMessage) {
  31. byte[] b = new byte[1024];
  32. int len = -1;
  33. BytesMessage bm = (BytesMessage) message;
  34. while ((len = bm.readBytes(b)) != -1) {
  35. System.out.println(new String(b, 0, len));
  36. }
  37. }
  38.  
  39. // 如果是Stream消息
  40. if (message instanceof StreamMessage) {
  41. StreamMessage sm = (StreamMessage) message;
  42. System.out.println(sm.readString());
  43. System.out.println(sm.readInt());
  44. }
  45. }

Activemq 消息类型 (转)的更多相关文章

  1. Activemq消息类型

    Activemq消息类型JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage.BytesMessage.和StreamMessage等五种.ActiveM ...

  2. activemq 消息类型

    //文本消息 TextMessage textMessage = session.createTextMessage("文本消息"); producer.send(textMess ...

  3. ActiveMQ之二--JMS消息类型

    1.前言 //发送文本消息 session.createTextMessage(msg); //接受文本消息 public void onMessage(Message msg) { TextMess ...

  4. 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型

    一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...

  5. ActiveMQ常见消息类型

    JMS由下面三部分组成:消息头.属性.消息体.其中消息体定义了五种消息体格式,也可以称为消息类型. JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage. ...

  6. JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明

    1----------------------观察者模式------------------------------ 观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的 ...

  7. JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

    1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是So ...

  8. Activemq消息确认机制 --转载

      转自:http://blog.csdn.net/czp11210/article/details/47022639 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存 ...

  9. ActiveMQ消息的延时和定时投递

    ActiveMQ对消息延时和定时投递做了很好的支持,其内部启动Scheduled来对该功能支持,也提供了一个封装的消息类型:org.apache.activemq.ScheduledMessage,只 ...

随机推荐

  1. Home Assistant系列美化篇——替换天气 UI

    替换天气组件 weather 的默认 UI,生成美观大方的气象卡片. Home Assistant 原生的天气平台不少,国内用户常用的有雅虎天气和 Darksky.其他论坛和社区也有分享自制的和风.彩 ...

  2. [转]Visual C++ 和 C++ 有什么区别?

    注:本篇内容转载与网络,方便自己学习,如有侵权请您联系我删除,谢谢. 有位同学问我“Visual C++和C++有什么区别?”,这的确是初学者会感到困惑的问题,比较常见.除此之外,还有“先学C++好, ...

  3. 清华大学《C++语言程序设计基础》线上课程笔记05---vector对象,对象的复制与移动,string类

    vector 对象 C++标准库中的一个类模板 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 将动态数组封装成类的知识点中封装的ArrayOfPoints也提供了类似功能,但只适用于一 ...

  4. JS本地保存数据的几种方法

    1.Cookie 这个恐怕是最常见也是用得最多的技术了,也是比较古老的技术了.COOKIE优点很多,使用起来很方便 但它的缺点也很多: 比如跨域访问问题:无法保存太大的数据(最大仅为4KB):本地保存 ...

  5. Java技术——Iterator和Enumeration的不同

    个函数接口.Iterator除了能读取集合的数据之外,也能对数据进行删除操作.尽管前者还没有被弃用但是已经被后者所代替了,Enumeration已经过时的,之所以没有被弃用是因为它仍被几种从以前版本遗 ...

  6. 北京Uber优步司机奖励政策(1月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 3991: [SDOI2015]寻宝游戏

    3991: [SDOI2015]寻宝游戏 https://www.lydsy.com/JudgeOnline/problem.php?id=3991 分析: 虚树+set. 要求树上许多点之间的路径的 ...

  8. php输出带尖括号的内容

    有这样的数组 $arr = array( 'facebook' => 'facebook', '<facebook>' => '<facebook>', ); 输出 ...

  9. GameplayKit的GKStateMachine用法与实例

    GKStateMachine 玩家进入GameScene场景中 -> 通过GKStateMachine进入到指定的游戏状态GKState 在GameScene场景中 -> 根据不同的逻辑调 ...

  10. Linux系统负载查询

    查询Linux系统负载情况,一般需要了解三个方面的信息: 1.Linux系统配置.如Linux版本号.CPU.内存.网络.磁盘等: 2.收集系统负载信息的手段.常用的工具包有sysstat和procp ...