spring整合rocketMq使用(完整代码,适合小白)

pom.xml:


	4.0.0
	com.th
	rocketMq
	0.0.1-SNAPSHOT
	war

	
		UTF-8
		4.12
		4.2.0.RELEASE
		4.3.1
		2.7.2
	

	
		
			org.springframework
			spring-test
			${spring.version}
			test
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		
		
			org.springframework
			spring-core
			${spring.version}
		

		
			com.alibaba.rocketmq
			rocketmq-client
			3.2.6
		
		
			com.alibaba.rocketmq
			rocketmq-all
			3.2.6
			pom
		

		
		
			junit
			junit
			${junit.version}
			test
		

		
			javax.servlet
			jstl
			1.2
		


	

springApplicationContext配置:




	

	
	

	

	

	

	
	
	
	
		
		
		
		
			
				
			
		
	


	
		
		
		
	


	
		
		
	



config.properties:

rocketmq.consumerGroup=thConsumerGroup
rocketmq.namesrvAddr=192.168.0.117:9876;192.168.0.118:9876
rocketmq.tags=TAG1
rocketmq.producer.group=thProducerGroup
rocketmq.topic=TestTopic1

UserController:

package com.th.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.alibaba.rocketmq.client.exception.MQBrokerException;
import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.producer.SendResult;
import com.alibaba.rocketmq.common.message.Message;
import com.alibaba.rocketmq.remoting.exception.RemotingException;
import com.th.producer.RocketMQProducer;

@Controller
public class UserController {
	@Autowired
	@Qualifier("rocketMQProducer")
	private RocketMQProducer producer;

	@RequestMapping(value = "/test", method = RequestMethod.GET)
	public String test() throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
		for (int i = 0; i < 100; i++) {
			Message msg = new Message("TestTopic1", "TAG1", (i + "這是spring集成").getBytes());
			SendResult result = producer.getDefaultMQProducer().send(msg);
			System.out.println(result);
			System.out.println(1);
		}
		return "hello";
	}
}

监听类(消费者):

package com.th.listener;

import java.io.UnsupportedEncodingException;
import java.util.List;

import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import com.alibaba.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import com.alibaba.rocketmq.common.message.MessageExt;

public class MessageListenerImpl implements MessageListenerConcurrently {

	@Override
	public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) {
		for (MessageExt msg : msgs) {
			try {
				System.out.println(">>>>" + new String(msg.getBody(), "UTF-8"));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
				return ConsumeConcurrentlyStatus.RECONSUME_LATER;
			}
		}
		// 如果没有异常会认为都成功消费
		return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
	}
}

生成者:

package com.th.producer;

import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.producer.DefaultMQProducer;

public class RocketMQProducer {
	// private static final Logger logger =
	// LoggerFactory.getLogger(RocketMQProducer.class);

	private DefaultMQProducer defaultMQProducer;
	private String producerGroup;
	private String namesrvAddr;
	//private String instanceName;
	//private int retryTimes;

	public void init() throws MQClientException {
		this.defaultMQProducer = new DefaultMQProducer(this.producerGroup);
		defaultMQProducer.setNamesrvAddr(this.namesrvAddr);
		//defaultMQProducer.setInstanceName(this.instanceName);
		//defaultMQProducer.setRetryTimesWhenSendFailed(this.retryTimes);
		defaultMQProducer.start();
		// logger.info("rocketMQ初始化生产者完成[producerGroup:" + producerGroup +
		// ",instanceName:" + instanceName + "]");
	}

	public void destroy() {
		defaultMQProducer.shutdown();
		// logger.info("rocketMQ生产者[producerGroup: " + producerGroup +
		// ",instanceName: " + instanceName + "]已停止");
	}

	public DefaultMQProducer getDefaultMQProducer() {
		return defaultMQProducer;
	}

	public void setProducerGroup(String producerGroup) {
		this.producerGroup = producerGroup;
	}

	public void setNamesrvAddr(String namesrvAddr) {
		this.namesrvAddr = namesrvAddr;
	}

	public void setInstanceName(String instanceName) {
		//this.instanceName = instanceName;
	}

	public void setRetryTimes(int retryTimes) {
		//this.retryTimes = retryTimes;
	}
}

web.xml:




	Archetype Created Web Application

	
		org.springframework.web.context.request.RequestContextListener
	

	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
		
			forceEncoding
			true
		
	
	
		CharacterEncodingFilter
		/*
	

	
		
		springMvc
		org.springframework.web.servlet.DispatcherServlet
		
		
			contextConfigLocation
			classpath:ApplicationContext.xml
		
		
		1
	

	
	
		springMvc
		/
	
	
	
		index.jsp
	

最后启动项目:

浏览器访问地址: http://localhost:8089/rocketMq/test

查看控制台,出现信息消费则成功

你可能感兴趣的:(系统架构,rocketMq)