解析ActiveMQ的使用说明总结

本文只针对ActiveMQ常见的一些问题进行介绍。关于如下下载、编译、部署、使用等基本应用不在本文范围内。

1、ActiveMQ支持消息过滤设置规则和用法

selector支持下列几种方式:

(1) String literals: "color ='blue'"

(2) Byte strings: “myBytes <> "0X0AFC23"”

(3) Numeric values: "NoltemsInStock > 20"

(4) Boolean literals TRUE or FALSE: "AcctDetails=TRUE"

(5) Composite expressions: "Type='car' AND (color = 'blue' OR color ='green') AND weight> 2500"

使用方式:

(1)创建生产者在send函数之前添加过滤属性:

message->setStringProperty("Color",pColor);

producer->send(message);

(2)在创建消费者createConsumer时进行如下设置:

std::string MessageFilter="color ='blue'"

m_pConsumer = m_pSession->createConsumer(m_pDestination, m_MessageFilter);

m_pConsumer->setMessageListener(this);

2、错误:Channel was inactive for too long (服务器消息较长时间没有消息发送时,客户端会报这个错误)

解决方法:在建立连接的Uri中加入: wireFormat.maxInactivityDuration=0

3、采用failover方式连接导致卡死

解决方法:不采用failover连接

4、ActiveMQ发送模式

(1)ActiveMQ异步发送,只需新增参数transport.useAsyncSend=true,具体如下:

BrokerUri = "tcp://127.0.0.1:61616?transport.useAsyncSend=true"

(2)ActiveMQ同步发送,只需新增参数transport.useAsyncSend=false,具体如下:

BrokerUri = "tcp://127.0.0.1:61616?transport.useAsyncSend=false"

其实activeMQ在默认情况下就是同步发送,所以在同步发送时可以简写为:

BrokerUri = "tcp://127.0.0.1:61616"

5、错误:The Session is closed(网络异常时客户端会报出这个错误)

解决办法:在建立连接的Uri中加入: maxReconnectDelay=10000

maxReconnectDelay 最大重连间隔

6、ActiveMQ负责均衡

对broker采取了负载均衡和基于共享文件系统的主备配置,这个时候,客户端生产者和消费者的URI中用

failover:(tcp://192.168.1.117:61616,tcp://192.168.1.118:61616,tcp://broker3:61616)

6、ActiveMQ的ACK设置

根据不同的需要可以将ACK设置为Session::CLIENT_ACKNOWLEDGE 或  Session::AUTO_ACKNOWLEDGE 默认为Session::AUTO_ACKNOWLEDGE 如:

if( clientAck )

{

session = connection->createSession( Session::CLIENT_ACKNOWLEDGE);

}

else

{

session = connection->createSession( Session::AUTO_ACKNOWLEDGE);

}

7、ActiveMQ的Topic设置

根据不同的需要可以将Topic设置为Topic或  Queue默认为Queue如:

if(useTopic)

{

destination = session->createTopic(destURI);

}

else

{

destination = session->createQueue(destURI);

}

8、ActiveMQ的DeliveryMode设置(生产者时设置)

根据不同的需要可以将DeliveryMode设置为DeliveryMode::NON_PERSISTENT或  DeliveryMode::PERSISTENT默认为DeliveryMode::NON_PERSISTENT如:

if(usePersistent)

{

producer->setDeliveryMode( DeliveryMode::PERSISTENT);

}

else

{

producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT);

}

(0)

相关推荐

  • ActiveMQ简单入门(新手必看篇)

    一.创建一个简单的Hello World案例 首先需要导入activemq-all-5.14.5.jar包,写生产端: package com.ietree.mq.helloworld; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProduc

  • ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建

    ActiveMQ 5.9.0新推出的主从实现,基于zookeeper来选举出一个master,其他节点自动作为slave实时同步消息.因为有实时同步数据的slave的存在,master不用担心数据丢失,所以leveldb会优先采用内存存储消息,异步同步到磁盘,所以该方式的activeMQ读写性能最好因为选举机制要超过半数,所以最少需要3台节点,才能实现高可用.如果集群是两台则master失效后slave会不起作用,所以集群至少三台.此种方式仅实现主备功能,避免单点故障,没有负载均衡功能. 1.环

  • 基于Zookeeper的使用详解

    更多内容请查看zookeeper官网 Zookper: 一种分布式应用的协作服务 Zookper是一种分布式的,开源的,应用于分布式应用的协作服务.它提供了一些简单的操作,使得分布式应用可以基于这些接口实现诸如同步.配置维护和分集群或者命名的服务.Zookper很容易编程接入,它使用了一个和文件树结构相似的数据模型.可以使用Java或者C来进行编程接入. 众所周知,分布式的系统协作服务很难有让人满意的产品.这些协作服务产品很容易陷入一些诸如竞争选择条件或者死锁的陷阱中.Zookper的目的就是将

  • Shell脚本实现自动安装zookeeper

    A:本脚本运行的机器,Linux RHEL6 B,C,D,...:待安装zookeeper cluster的机器, Linux RHEL6 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装zk的机器B,C,D,...上,然后就可以在A上运行本脚本: 复制代码 代码如下: $ ./install_zookeeper 前提: B, C, D机器必须配置好repo,本脚本使用的是cdh5的repo, 下面的内容保存到:/etc/yum.repos.d/cloudera-cdh5.repo: 复

  • java使用zookeeper实现的分布式锁示例

    使用zookeeper实现的分布式锁 分布式锁,实现了Lock接口 复制代码 代码如下: package com.concurrent; import java.io.IOException;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeU

  • ActiveMQ在C#中的应用示例分析

    本文实例讲述了ActiveMQ在C#中的应用.分享给大家供大家参考,具体如下: ActiveMQ是个好东东,不必多说.ActiveMQ提供多种语言支持,如Java, C, C++, C#, Ruby, Perl, Python, PHP等.由于我在windows下开发GUI,比较关心C++和C#,其中C#的ActiveMQ很简单,Apache提供NMS(.Net Messaging Service)支持.Net开发,只需如下几个步骤即能建立简单的实现.C++的应用相对麻烦些,后面会有文章介绍.

  • springboot集成activemq的实例代码

    ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位. 特性 多种语言和协议编写客户端.语言: Java,C,C++,C#,Ruby,Perl,Python,PHP.应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP

  • 使用curator实现zookeeper锁服务的示例分享

    复制代码 代码如下: import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit; import com.netflix.curator.RetryPolicy;import com.netflix.curator.framework.

  • 理解zookeeper选举机制

    zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的. 这篇主要分析leader的选择机制,zookeeper提供了三种方式: LeaderElection AuthFastLeaderElection FastLeaderElection 默认的算法是FastLeaderElection,所以这篇主要分析它的选举机制. 选择机制中的概

  • 详解Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 1.消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Java 实现. 2.优势:异步.可靠 3.消息模型:点对点,发布/订阅 4.JMS中的对象 然后在另一篇博客<Java消息队列-ActiveMq实战>中,和大家一起从0到1的开启了一个ActiveMq 的项目,在项目开发的过程中,我们对ActiveMq有了一定的了解: 1.多种语言和协议编写客户端

随机推荐