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);
}
相关推荐
ActiveMQ因其强大的功能、灵活的配置以及广泛的兼容性,在企业级应用中被广泛使用。 #### 二、ActiveMQ应用场景 ##### 2.1 业务解耦 在实际业务场景中,系统之间的交互往往需要通过复杂的调用来完成。使用消息...
总结来说,ActiveMQ是Java世界中广泛使用的消息中间件,通过JMS接口提供可靠的消息传递功能。了解其工作原理和API,对于构建健壮的、分布式的Java应用程序至关重要。无论是简单的点对点通信还是复杂的发布/订阅模式...
ActiveMQ中间件面试总结
**标题:“ActiveMQ问题总结”** 在分布式系统中,消息队列扮演着至关重要的角色,它作为组件间通信的一种高效手段,确保了系统的解耦、异步处理和高可用性。ActiveMQ是Apache软件基金会开发的一款开源消息中间件,...
在IBM AIX操作系统上部署Websphere与ActiveMQ是一项复杂的工作,涉及到多个步骤和技术细节。以下是对这个过程的详尽解析: 首先,我们要了解环境背景: 1. Aix Version5:这是一个基于UNIX的操作系统,由IBM开发,...
【ActiveMQ 学习总结】 在现代网络通讯中,HTTP 请求通常采用同步方式,基于请求-响应模式。这意味着客户端调用服务端接口后,必须等待服务端返回结果才能继续执行,这种方式称为同步调用。然而,同步调用的缺点...
本文总结了消息中间件ActiveMQ的学习要点,涵盖了为什么使用消息中间件、消息中间件的组成、JMS规范、ActiveMQ简介、消息中间件的应用场景等方面。 一、为什么使用消息中间件 使用消息中间件可以解决分布式系统...
### ActiveMQ 安装与使用详解 #### 一、ActiveMQ简介 ActiveMQ 是Apache出品的一款优秀的开源消息中间件,支持多种消息传输协议,并且具备良好的扩展性。它基于Java语言开发,支持JMS标准,同时也支持AMQP、STOMP...
总结来说,ActiveMQ是一个强大的消息中间件,它的易用性、灵活性和可靠性使其成为企业级应用的首选。通过理解并熟练掌握ActiveMQ的使用,开发者可以构建出高效、可扩展的应用系统,并通过其丰富的管理工具来监控和...
总结来说,使用ActiveMQ的JDBC持久化需要合适的jar包支持,包括ActiveMQ自身的JDBC相关库、数据库驱动和连接池库。正确配置这些组件并设置好数据源,才能确保ActiveMQ能有效地利用JDBC进行消息持久化。
总结 ActiveMQ作为JMS的一个实现,提供了一种标准化的消息传递解决方案,适用于构建高并发、高可靠性的分布式系统。其点对点和发布/订阅模式满足了不同场景下的需求,而丰富的特性和广泛的语言支持使其成为许多企业...
- **非阻塞IO**:通过配置ActiveMQ使用非阻塞IO,可以减少线程的使用,从而支持更多并发连接。 - **消息分发线程池**:通过设置 `org.apache.activemq.UseDedicatedTaskRunner` 为 `false`,可以让ActiveMQ使用一个...
本篇文章将深入探讨如何使用ActiveMQ进行JMS开发,以及ActiveMQ的核心特性。 一、Java消息服务(JMS) JMS是一种为分布式环境设计的消息传递规范,它定义了生产、存储和消费消息的标准接口。通过JMS,应用程序可以...
3. **网络传输优化**:ActiveMQ使用高效的网络协议,降低延迟,提高消息传递效率。 4. **多种协议支持**:除了JMS,还支持STOMP、AMQP、MQTT等协议,适应不同应用场景。 5. **消息筛选和分组**:通过消息选择器,...
总结来说,Apache ActiveMQ是Linux环境下的强大消息中间件,提供了丰富的特性和高度的灵活性,对于构建分布式系统和实现微服务架构有着重要的作用。通过理解和掌握ActiveMQ的使用,可以提升系统的可扩展性和稳定性,...
总结来说,Apache ActiveMQ客户端提供了与ActiveMQ服务器通信的工具和接口,允许开发者构建可靠、高效的分布式消息系统。通过理解和使用这个客户端,你可以构建出能够处理大量并发消息、支持多种消息模式的应用程序...
总结,ActiveMQ v6.0.1是一个强大且灵活的消息中间件,适用于各种分布式环境中的消息传递需求。通过其丰富的特性和广泛的支持,开发者可以构建出高效、可靠的系统架构。对于毕业设计论文和计算机案例研究,ActiveMQ...
标题 "activemq入门总结" 暗示了本文将主要围绕Apache ActiveMQ,一个流行的开源消息代理和队列中间件进行讲解。ActiveMQ是基于Java Message Service (JMS) API 的,它允许应用程序在分布式环境中发送和接收消息,...
需要注意的是,使用消息连接池需要引入额外的依赖 `activemq-pool.jar`。 #### 存储数据库配置 ActiveMQ 支持多种持久化方式,包括 KahaDB 和 LevelDB 等。如果需要将消息存储到关系型数据库中,则需要进行相应的...
在使用ActiveMQ消息中间件时,我们常常需要考虑如何在多个实例之间实现高可用性(HA)。其中一种常用的方式是采用**Failover(故障转移)**模式来确保即使一个节点出现问题,另一个节点也能接管服务,从而维持系统的...