Apache RocketMQ官网翻译(二)

简单消息例子

  • 使用rocketMQ发送消息会有三种模式:可靠同步、可靠异步和单向三种传输
  • 使用rocketMQ消费消息
1、添加依赖包

maven:

  <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.3.0</version>
    </dependency>

gradle:

compile 'org.apache.rocketmq:rocketmq-client:4.3.0'
2.1 同步发送消息

可靠同步传输有很广泛的应用场景,比如重要的通知,sms通知,sms市场营销系统等

public class SyncProducer {
    public static void main(String[] args) throws Exception {
        //指定一个生产者组名字初始化生产者
        DefaultMQProducer producer = new
            DefaultMQProducer("please_rename_unique_group_name");
        // 指定命名服务的地址
        producer.setNamesrvAddr("localhost:9876");
        //启动实例
        producer.start();
        for (int i = 0; i < 100; i++) {
            //创建消息实例,定义好topic、tag和消息体
            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //调用send方法将消息分发给broker集群
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //当生产者实例不再使用时销毁生产者实例
        producer.shutdown();
    }
}
2.2 异步发送消息

异步传输通常被使用在对响应时间敏感的业务场景

public class AsyncProducer {
    public static void main(String[] args) throws Exception {
        //指定一个生产者组名字初始化生产者
        DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
        // 指定命名服务的地址
        producer.setNamesrvAddr("localhost:9876");
        //Launch the instance.
        producer.start();
        producer.setRetryTimesWhenSendAsyncFailed(0);
        for (int i = 0; i < 100; i++) {
                final int index = i;
                        //创建消息实例,定义好topic、tag和消息体
                Message msg = new Message("TopicTest",
                    "TagA",
                    "OrderID188",
                    "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
                producer.send(msg, new SendCallback() {
                    @Override
                    public void onSuccess(SendResult sendResult) {
                        System.out.printf("%-10d OK %s %n", index,
                            sendResult.getMsgId());
                    }
                    @Override
                    public void onException(Throwable e) {
                        System.out.printf("%-10d Exception %s %n", index, e);
                        e.printStackTrace();
                    }
                });
        }
        //当生产者实例不再使用时销毁生产者实例
        producer.shutdown();
    }
}
3 消费消息
public class Consumer {

    public static void main(String[] args) throws InterruptedException, MQClientException {

        //指定一个生产者组名字初始化生产者
       DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
         
        // 指定命名服务的地址
        consumer.setNamesrvAddr("localhost:9876");
        
        // 给消费者指定一个或者多个topic
        consumer.subscribe("TopicTest", "*");
        // 注册回调函数,用于执行从brokers获取到的消息
        consumer.registerMessageListener(new MessageListenerConcurrently() {

            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                ConsumeConcurrentlyContext context) {
                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        //启动消费者实例
        consumer.start();

        System.out.printf("Consumer Started.%n");
    }
}

4 查询更多

另外,你可以获取到更多的实例从:https://github.com/apache/rocketmq/tree/master/example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值