2个回答
展开全部
看到这个问题我真是很难过,我现在工程一启动就把activemq自动启动起来,但是我不想这么搞啊!怎么都弄不掉,发上配置问题给你看看
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.12.1.xsd"
>
<context:component-scan base-package="com.lottery.i" />
<mvc:annotation-driven />
<amq:connectionFactory id="amqConnectionFactory"
brokerURL="tcp://${activemq.url}:${activemq.port}"
userName="${activemq.name}"
password="${activemq.password}" />
<!-- 配置JMS连接工长 -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
<constructor-arg ref="amqConnectionFactory" />
<property name="sessionCacheSize" value="100" />
</bean>
<!-- 定义消息Topic -->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<!-- 投注推送容器 -->
<constructor-arg value="resultTopic"/>
</bean>
<!-- 配置JMS模板(Topic),Spring提供的JMS工具类,它发送、接收消息。 -->
<bean id="jmsTemplate4T" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="topicDestination" />
<property name="receiveTimeout" value="1000" />
<!-- true是topic,false是queue,默认是false,此处显示写出false -->
<property name="pubSubDomain" value="true" />
<!-- 发送模式
DeliveryMode.NON_PERSISTENT=1:非持久 ;
DeliveryMode.PERSISTENT=2:持久
-->
<property name="deliveryMode" value="2"/>
</bean>
<bean id="topicProducer" class="com.lottery.i.server.impl.TopicProducerService">
</bean>
<!-- 配置JMS连接工厂(投注推送) -->
<bean id="consumerConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:(tcp://${activemq.url}:${activemq.port})" />
<property name="useAsyncSend" value="true" />
<property name="clientID" value="${activemq.clientBettingId}" /><!-- 这个clientID各个服务器要唯一 -->
</bean>
<!-- 消息订阅客户端1 -->
<bean id="consumerListenerClient1" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="consumerConnectionFactory" />
<!-- 开启订阅模式 -->
<property name="pubSubDomain" value="true"/>
<property name="destination" ref="topicDestination" />
<property name="subscriptionDurable" value="true"/>
<!---这里是设置接收客户端的ID,在持久化时,但这个客户端不在线时,消息就存在数据库里,直到被这个ID的客户端消费掉-->
<property name="clientId" value="${activemq.clientBettingId}"/><!-- 这个clientID各个服务器要唯一 -->
<property name="messageListener" ref="consumerMessageListenerBetting" />
<!-- 消息应答方式
Session.AUTO_ACKNOWLEDGE 消息自动签收
Session.CLIENT_ACKNOWLEDGE 客户端调用acknowledge方法手动签收
Session.DUPS_OK_ACKNOWLEDGE 不必必须签收,消息可能会重复发送
-->
<property name="sessionAcknowledgeMode" value="1"/>
</bean>
<!-- 配置消息消费监听者 -->
<bean id="consumerMessageListenerBetting" class="com.lottery.i.server.impl.ConsumerMessageListenerBetting" />
</beans>
展开全部
工程中导入activemq-broker-5.10.0.jar执行下面的语句就能启动一个代理服务。这就算起来了,这样就可以收发消息了,当然路径要改一下。
至于什么时候启动这个服务,自己在xml文件里去配置就可以了。
BrokerService broker = new BrokerService();
broker.addConnector("tcp://localhost:61616");
broker.setBrokerName("mybroker");
broker.start();
至于什么时候启动这个服务,自己在xml文件里去配置就可以了。
BrokerService broker = new BrokerService();
broker.addConnector("tcp://localhost:61616");
broker.setBrokerName("mybroker");
broker.start();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询