active mq如何实现多个生产者一个消费者传递消息。
这里是生产者的spring配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"
default-lazy-init="false">
<amq:broker useJmx="false" persistent="true">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616" />
</amq:transportConnectors>
<amq:networkConnectors>
<amq:networkConnector uri="static://(tcp://192.168.1.170:61616)" duplex="true"/>
</amq:networkConnectors>
<!-- 持久化本地文件 -->
<amq:persistenceAdapter>
<amq:kahaDB directory="activemq-data\localhost\KahaDB" journalMaxFileLength="20mb"/>
</amq:persistenceAdapter>
</amq:broker>
<!-- 配置JMS连接工厂 -->
<amq:connectionFactory id="jmsConnectionFactory" brokerURL="tcp://localhost:61616" />
<!-- 发送队列目的地 -->
<bean id="myQueue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="WSQueue" />
</bean>
<!-- 创建JMS的Session生成类,也就是jmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
</bean>
</property>
<property name="defaultDestination" ref="myQueue" />
</bean>
<!-- 消息生产者 -->
<bean id="jmsProducer" class="net.greatsoft.hipes.util.JMSProducer">
<property name="jmsTemplate" ref="jmsTemplate" />
</bean>
<!-- 消息接收类(这个类需要继承javax.jms.MessageListener) -->
<bean id="messageListener" class="net.greatsoft.hipes.util.JMSListener">
</bean>
<!-- 接收队列目的地 -->
<bean id="myQueue1" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="WSQueue1" />
</bean>
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="myQueue1" />
<property name="messageListener" ref="messageListener" />
</bean>
</beans>
这里是消费者的spring配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"
default-lazy-init="false">
<!-- 配置JMS连接工厂 -->
<amq:connectionFactory id="jmsConnectionFactory" brokerURL="tcp://localhost:61616" />
<!-- 发送队列目的地1 -->
<bean id="myQueue101" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="WSQueue" />
</bean>
<!-- 发送队列目的地2 -->
<bean id="myQueue102" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="WSQueue" />
</bean>
<!-- 接收队列目的地1 -->
<bean id="myQueue1" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="WSQueue" />
</bean>
<!-- 接收队列目的地2 -->
<bean id="myQueue2" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="WSQueue" />
</bean>
<!-- 创建JMS的Session生成类,也就是jmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
</bean>
</property>
<property name="defaultDestination" ref="myQueue101" />
</bean>
<!-- 创建JMS的Session生成类,也就是jmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
</bean>
</property>
<property name="defaultDestination" ref="myQueue102" />
</bean>
<!-- 消息生产者 -->
<bean id="jmsProducer" class="net.greatsoft.hiprs.util.JMSProducer">
<property name="jmsTemplate" ref="jmsTemplate" />
</bean>
<!-- 消息接收类(这个类需要继承javax.jms.MessageListener) -->
<bean id="messageListener" class="net.greatsoft.hiprs.util.JMSListener">
</bean>
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="myQueue1" />
<property name="messageListener" ref="messageListener" />
</bean>
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="myQueue2" />
<property name="messageListener" ref="messageListener" />
</bean>
</beans>
如何修改呢?现在只能实现一对一连接,当另一个生产者再连接的时候,提示队列被占用之类的错误信息
相关推荐
首先,我们需要配置JMS连接工厂,创建一个到Active MQ服务器的连接,然后创建会话和目的地(队列或主题),最后创建生产者和消费者。生产者用于发送消息,而消费者用于接收消息。这个示例可能涵盖了Active MQ的基本...
而在Pub/Sub模型中,多个订阅者可以接收同一个消息。 ### 知识点三:ActiveMQ组件配置 #### 连接ActiveMQ 连接到ActiveMQ通常涉及配置客户端连接参数,如Broker URL、身份验证凭证等。书中会详细介绍如何使用不同...
生产者将文件拆分成多个小块,每一块作为一个消息发送到队列,消费者则按顺序接收并重新组合成原始文件。 ActiveMQ提供了多种消息类型,包括点对点(Queue)和发布/订阅(Topic)模型。点对点模型中,每个消息只能...
首先,ActiveMQ的核心功能是作为一个消息代理,它接收和转发消息,允许应用程序之间进行异步通信。通过使用消息队列,ActiveMQ可以确保即使在高并发或者网络不稳定的情况下,消息也能被正确地发送和接收,提高了系统...
2. **ActiveMQ架构**:详细介绍了ActiveMQ的内部工作原理,包括broker(消息代理)、producer(生产者)、consumer(消费者)和message(消息)的角色和交互。 3. **JMS API**:解释了如何使用JMS API来创建、发送...
1. **Point-to-Point (P2P)**:确保每个消息都被一个消费者接收,适合需要可靠传递的场景。 2. **Publish/Subscribe (Pub/Sub)**:广播消息,可以被多个消费者接收,适用于一对多的通信需求。 理解这些概念和机制...
1. **消息队列(Message Queuing)原理**:消息队列是一种基于发布/订阅模式的通信方式,其中生产者(发送方)将消息放入队列,而消费者(接收方)从队列中取出消息。这种机制可以确保即使在发送者和接收者之间的...
此外,Apache ActiveMQ在故障转移场景下,没有中央化的管理方式,意味着管理员需要单独访问每一个Broker来管理。而对于IBMMQ而言,提供了对集群环境的集中化管理,管理控制台可以管理整个集群的配置,这在复杂的企业...
通过JMS API,开发者可以创建生产者(Producer)来发送消息,以及消费者(Consumer)来接收消息。ActiveMQ支持点对点(Queue)和发布/订阅(Topic)两种模型,分别适用于一对一通信和一对多广播。 消息转发的核心...
- **接收端代码示例**:同样通过`ActiveMQConnectionFactory`创建连接工厂,之后创建连接、会话、消息消费者,接收消息后关闭会话和连接。 ```java public class QueueReceiver { public static void main(String...
在这种模式下,生产者(publisher)发布消息到一个主题(topic),而消费者(subscriber)订阅该主题以接收这些消息。与点对点模型不同,发布/订阅模式中的消费者可以是多个,每个订阅者都能接收到所有发布的消息。 ...
`<transportConnectors>`标签下定义了传输连接器(transportConnectors),它们负责建立Broker与消息生产者、消费者之间的交互。传输连接器支持多种协议,为不同的需求提供了灵活的配置选项。每种协议都有其适用的...
通过将消息放入队列,生产者可以将任务或数据传递给消费者,而无需等待响应。这种解耦的特性使得系统能够处理高并发场景,提高性能和可靠性。常见的MQ产品有RabbitMQ、Kafka、ActiveMQ等。 Openfire,另一方面,是...
- **异步消费**:客户可以为消费者注册一个消息监听器 (`MessageListener`),以定义在消息到达时所采取的动作。 ##### 1.7 消息 (Message) JMS 消息由以下三个主要部分组成: - **消息头** (`Message Header`):...
5. **创建和管理队列**:在控制台上,可以创建消息队列,设置消费者和生产者,监控队列状态。 6. **发送和接收消息**:使用JMS API或者支持的其他语言API,编写代码实现消息的发送和接收。 **ActiveMQ的安全性:** ...
在点对点模型中,消息从一个生产者发送到一个队列,然后由一个消费者接收;而在发布/订阅模型中,消息从发布者发送到主题,多个订阅者可以接收这些消息。 在实现过程中,我们通常会使用JMS的API创建...
这种模式可以提高系统的可扩展性和容错性,因为消息可以在生产者和消费者之间缓冲,即使消费者暂时无法处理,消息也不会丢失。 2. **ActiveMQ特性**: - **多协议支持**:ActiveMQ支持多种消息协议,如OpenWire、...
3. 创建一个消息监听容器,如`DefaultMessageListenerContainer`,并配置消费者监听器类。 4. 创建一个生产者bean,用于发送消息到队列。 5. 将ActiveMQ的配置文件(如`activemq.xml`)放置在Spring应用上下文能够...
一个消息只能被一个消费者消费一次。 - **生产者(Producer)**:创建ConnectionFactory对象,指定服务端地址;使用ConnectionFactory创建Connection对象,开启连接;创建Session对象,然后创建Destination对象...
6. **消息生产者与消费者**:掌握如何使用ActiveMQ收发工具创建消息生产者发送消息,以及创建消息消费者接收消息。 7. **持久化与非持久化消息**:了解消息的持久性配置,这决定了消息在服务器重启后是否仍然可用。...