rocket mq支持OpenMessaging访问示例
来源:互联网 发布:kali linux ddos 编辑:程序博客网 时间:2024/06/05 15:22
OpenMessaging示例
RocketMQ提供OpenMessaging 0.1.0-alpha的部分实现,以下示例演示如何基于OpenMessaging访问RocketMQ。
OpenMessaging包括建立行业准则和消息传递,流媒体规范为金融,电子商务,物联网和大数据区域提供了一个共同的框架。设计原则是分布式异构环境中面向云,简单,灵活和语言无关。符合这些规范将有可能在所有主要平台和操作系统上开发异构消息应用程序。
OMSProducer
以下示例显示如何在同步,异步或单向传输中向RocketMQ代理发送消息。
public class OMSProducer { public static void main(String[] args) { final MessagingAccessPoint messagingAccessPoint = MessagingAccessPointFactory .getMessagingAccessPoint("openmessaging:rocketmq://IP1:9876,IP2:9876/namespace"); final Producer producer = messagingAccessPoint.createProducer(); messagingAccessPoint.startup(); System.out.printf("MessagingAccessPoint startup OK%n"); producer.startup(); System.out.printf("Producer startup OK%n"); { Message message = producer.createBytesMessageToTopic("OMS_HELLO_TOPIC", "OMS_HELLO_BODY".getBytes(Charset.forName("UTF-8"))); SendResult sendResult = producer.send(message); System.out.printf("Send sync message OK, msgId: %s%n", sendResult.messageId()); } { final Promise<SendResult> result = producer.sendAsync(producer.createBytesMessageToTopic("OMS_HELLO_TOPIC", "OMS_HELLO_BODY".getBytes(Charset.forName("UTF-8")))); result.addListener(new PromiseListener<SendResult>() { @Override public void operationCompleted(Promise<SendResult> promise) { System.out.printf("Send async message OK, msgId: %s%n", promise.get().messageId()); } @Override public void operationFailed(Promise<SendResult> promise) { System.out.printf("Send async message Failed, error: %s%n", promise.getThrowable().getMessage()); } }); } { producer.sendOneway(producer.createBytesMessageToTopic("OMS_HELLO_TOPIC", "OMS_HELLO_BODY".getBytes(Charset.forName("UTF-8")))); System.out.printf("Send oneway message OK%n"); } producer.shutdown(); messagingAccessPoint.shutdown(); }}
OMSPullConsumer
使用OMS PullConsumer轮询来自指定队列的消息。
public class OMSPullConsumer { public static void main(String[] args) { final MessagingAccessPoint messagingAccessPoint = MessagingAccessPointFactory .getMessagingAccessPoint("openmessaging:rocketmq://IP1:9876,IP2:9876/namespace"); final PullConsumer consumer = messagingAccessPoint.createPullConsumer("OMS_HELLO_TOPIC", OMS.newKeyValue().put(NonStandardKeys.CONSUMER_GROUP, "OMS_CONSUMER")); messagingAccessPoint.startup(); System.out.printf("MessagingAccessPoint startup OK%n"); consumer.startup(); System.out.printf("Consumer startup OK%n"); Message message = consumer.poll(); if (message != null) { String msgId = message.headers().getString(MessageHeader.MESSAGE_ID); System.out.printf("Received one message: %s%n", msgId); consumer.ack(msgId); } consumer.shutdown(); messagingAccessPoint.shutdown(); }}
OMSPushConsumer
将OMS PushConsumer附加到指定的队列,并通过MessageListener消耗消息
public class OMSPushConsumer { public static void main(String[] args) { final MessagingAccessPoint messagingAccessPoint = MessagingAccessPointFactory .getMessagingAccessPoint("openmessaging:rocketmq://IP1:9876,IP2:9876/namespace"); final PushConsumer consumer = messagingAccessPoint. createPushConsumer(OMS.newKeyValue().put(NonStandardKeys.CONSUMER_GROUP, "OMS_CONSUMER")); messagingAccessPoint.startup(); System.out.printf("MessagingAccessPoint startup OK%n"); Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { @Override public void run() { consumer.shutdown(); messagingAccessPoint.shutdown(); } })); consumer.attachQueue("OMS_HELLO_TOPIC", new MessageListener() { @Override public void onMessage(final Message message, final ReceivedMessageContext context) { System.out.printf("Received one message: %s%n", message.headers().getString(MessageHeader.MESSAGE_ID)); context.ack(); } }); }}
阅读全文
0 0
- rocket mq支持OpenMessaging访问示例
- rocket mq Logappender示例——支持log4j等
- rocket mq 的广播模式示例
- rocket mq 时间表示例——setDelayTimeLevel
- rocket mq 订单讯息 示例——实现 MessageQueueSelector
- Rocket MQ 结构体系
- rocket mq的工作原理
- rocket mq——批次实例
- rocket mq windows环境下部署
- rocket mq初识(启动停止win7 下的rocket mq server)
- rocket
- alibaba rocket mq的串行及并行处理
- Rocket MQ consumer 源码分析(绝对干货)
- rocket mq的发展历史和底层实现原理
- rocket mq 源码分析-Message 发送与接收
- IBM MQ 简单示例
- JMS&MQ系列之简单示例
- MQ通道配置示例(1):Sender/Receiver
- HYSBZ4448-情报传递
- 中国农业银行网上银行付款遇到的NetSign.cab被阻止的问题
- 【JEECG_3.7.1】列表多表头的设计
- 文章标题
- Spring Bean加载源码解析
- rocket mq支持OpenMessaging访问示例
- JTA的事务管理由UserTransaction管理.
- 【c++】use vector
- cas单点登录循环重定向问题
- http://9713bbb1.wiz03.com/share/s/2n4XKN1YKkvr2PQq7C18Rgeg2BZisx020QAj2zEMAn3mZxJG
- stm 32 在线升级
- jenkins安装后 配置免密登录 jenkins连接不上
- 201403-2窗口
- Oracle查看修改表空间