一、示例代码

这段代码实现了一个独立线程监听在一个特殊的消息队列上,一旦收到消息就处理并发送给MQ,然后推送给所有的消费者。

 import com.alibaba.rocketmq.client.exception.MQBrokerException;
import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.producer.DefaultMQProducer;
import com.alibaba.rocketmq.client.producer.SendResult;
import com.alibaba.rocketmq.client.producer.SendStatus;
import com.alibaba.rocketmq.common.message.Message;
import com.alibaba.rocketmq.remoting.exception.RemotingException; import java.util.concurrent.LinkedBlockingQueue; public class ThreadMqProducer implements Runnable {
public static LinkedBlockingQueue queue = new LinkedBlockingQueue();
private DefaultMQProducer producer = new DefaultMQProducer("rmq-group"); public static void main(String[] args) {
ThreadMqProducer tpd = new ThreadMqProducer();
tpd.init(); Thread t1 = new Thread(tpd);
t1.setName("mq-thread");
t1.start();
} public void init() {
producer.setNamesrvAddr("172.18.4.114:9876");
producer.setInstanceName("producer"); try {
producer.start();
} catch (MQClientException e) {
e.printStackTrace();
}
} public void release() {
producer.shutdown();
} public int send2MQ(String body) {
Message msg = new Message("TopicA-test", "TagA", body.getBytes());
SendResult sendResult; try {
sendResult = producer.send(msg); if (sendResult.getSendStatus() == SendStatus.SEND_OK) {
return ;
}
} catch (MQClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemotingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MQBrokerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return -;
} @Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
String body = queue.take();
System.out.println(
"take a message from queue... send notify to rocketmq!");
send2MQ(body);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

最新文章

  1. SQL Server导入数据时“启用标示插入”详解
  2. 60行以内写mvc
  3. hdu 4165 dp
  4. [译]如何在Unity编辑器中添加你自己的工具
  5. 重新学习struts
  6. [转]Log4Net中配置文件的解释
  7. zoj 3471 Most Powerful(状态压缩dp)
  8. I/O和管道
  9. Dynamics 365权限变化大部署后需要注意什么?
  10. ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议
  11. spring源码解析1--spring整体架构
  12. Appium测试安卓apk遇到的问题及解决方法
  13. uiautomatorviewer报错“Error taking device screenshot: EOF” ,
  14. Linux基础学习(10)--Shell基础
  15. Oracle 之 树查询 START WITH ... CONNECT BY ...子句
  16. WebDriverTest
  17. 廖雪峰Java1-3流程控制-4switch多重选择
  18. C#6.0语言规范(十八) 不安全代码
  19. 基于spring-cloud的微服务(1) 服务注册中心eureka
  20. 外层div高度不随内层div高度改变的解决办法

热门文章

  1. MongoDB学习笔记(四)--索引 && 性能优化
  2. 解决Sublime包管理package control 报错 There are no packages available for installation
  3. 安装--->Tomcat监控工具Probe
  4. TextView跑步灯效果及在特殊情况下无效的解决方式
  5. Activiti Designer 5.14.1插件安装和使用
  6. bzoj3675【APIO2014】序列切割
  7. 设计模式——门面模式(Facade)
  8. Win10怎么设置点击任务栏上文件夹图标直接打开“我的电脑”?
  9. java面试第七天
  10. CF MVC3此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接 解决方法