Spring 与 ActiveMQ 整合代码

0
(0)

Spring 与 ActiveMQ 整合代码

<bean id="targetConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactoryFactoryBean">
        <property name="tcpHostAndPorts">
            <list>
                <value>tcp://localhost:61616</value>
            </list>
        </property>
        <property name="maxReconnectDelay" value="5000"/>
    </bean>

    <!-- 配置JMS ConnectionFactory -->
    <bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="cacheProducers" value="true"/>
        <property name="targetConnectionFactory" ref="targetConnectionFactory">
        </property>
        <property name="reconnectOnException" value="true"/>
    </bean>


    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
    </bean>

    <!-- 主题消息目的地 -->
    <!--<bean class="org.apache.activemq.command.ActiveMQTopic">-->
    <!--&lt;!&ndash; 设置主题的名字&ndash;&gt;-->
    <!--<constructor-arg name="name" value="subject"/>-->
    <!--</bean>-->

    <!--队列消息目的地 -->

    <!--短信队列-->
    <bean id="smsQueue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg name="name" value="smsQueue"/>
    </bean>
    <!--信鸽推送-->
    <!--发送邮件-->


    <bean id="smsQueueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="concurrentConsumers" value="10"/>
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="destination" ref="smsQueue"/>
        <property name="messageListener" ref="smsQueueConsumer"/>
        <property name="pubSubNoLocal" value="false"/>
        <property name="pubSubDomain" value="false"/>
    </bean>

短信消息处理

public class SmsQueueConsumer implements MessageListener {
    @Override
    public void onMessage(Message message) {
        String topicName = null;
        try {
            Queue jmsReplyTo = (Queue) message.getJMSDestination();
            ;
            topicName = jmsReplyTo.getQueueName();
        } catch (JMSException e) {
            e.printStackTrace();
        }

        if (message instanceof TextMessage) {
            try {
                System.out.println(Thread.currentThread().getName() + ",收到队列(" + topicName + ")的消息:" + ((TextMessage) message).getText());
            } catch (JMSException ex) {
                throw new RuntimeException(ex);
            }
        } else {
            throw new IllegalArgumentException("Message must be of type TextMessage");
        }
    }
}

这篇文章有用吗?

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

分类:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据