Active MQ 接收消息

商品调价队列的接收端,如果调价失败会再次调用发送端

import com.alibaba.fastjson.JSON;
import com.meishi.basic.web.modules.shop.entity.ProductsPriceAdjust;
import com.meishi.basic.web.modules.shop.service.ProductsPriceAdjustService;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import javax.jms.*;
import java.util.List;
import java.util.Map;


/**
 * 商品调价监听端
 *
 * @author WYP
 */

public class ProductsPriceAdjustListener implements MessageListener {
    protected Logger logger = LogManager.getLogger(getClass());
    @Autowired
    private ProductsPriceAdjustService productsPriceAdjustService;

    @Override
    public void onMessage(Message message) {
        try {
            //获取到接收的数据
            String receiveMsg = ((TextMessage) message).getText();
            logger.info("接收成功!" + receiveMsg);
            Map receiveMap = (Map) JSON.parse(receiveMsg);
            //处理业务逻辑
            if (!"200".equals(receiveMap.get("status").toString())) {
                String goodsId = receiveMap.get("data").toString();
                ProductsPriceAdjust productsPriceAdjust = new ProductsPriceAdjust();
                productsPriceAdjust.setGoodsId(goodsId);
                List<ProductsPriceAdjust> list = productsPriceAdjustService.findList(productsPriceAdjust);
                if (list.size() != 0) {
                    productsPriceAdjust = productsPriceAdjustService.findList(productsPriceAdjust).get(0);
                    productsPriceAdjustService.sendEntity(productsPriceAdjust);
                }
            }
            //确认接收,并成功处理了消息
            message.acknowledge();
        } catch (JMSException e) {
            logger.error("接收成功!" + e);
            e.printStackTrace();
        }
    }
}

XML文件还需要如下:

	<!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
		<property name="connectionFactory" ref="connectionFactory" />
	</bean>

	<!-- 真正可以产生Connection的ConnectionFactory,由ActiveMQ提供 -->
	<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL" value="failover:tcp://192.168.3.17:61616" />
		<property name="userName" value="admin" />
		<property name="password" value="admin" />
        <!--<!– 消息传输监听器 处理网络及服务器异常 –>-->
		<!--<property name="transportListener">-->
			<!--<bean class="com.meishi.basic.web.modules.api.service.ProductsPriceAdjustListener" />-->
		<!--</property>-->
	</bean>

	<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
	<bean id="connectionFactory"
		  class="org.springframework.jms.connection.SingleConnectionFactory">
		<property name="targetConnectionFactory" ref="targetConnectionFactory" />
	</bean>

	<!--这个是队列目的地 -->
	<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
 		<constructor-arg value="item.queue.result"/>
	</bean>
	<!-- 消息监听器 -->
	<bean id="productsPriceAdjustListener" class="com.meishi.basic.web.modules.api.service.ProductsPriceAdjustListener" />
	<!-- 消息监听容器 -->
	<bean id="jmsContainer"
		  class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="connectionFactory" />
		<property name="destination" ref="queueDestination" />
		<property name="messageListener" ref="productsPriceAdjustListener" />
		<!-- 设置固定的线程数 -->
		<property name="concurrentConsumers" value="2"/>
		<!-- 设置动态的线程数 -->
		<property name="concurrency" value="2-5"/>
	</bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值