Rocketmq java hello world 入门案例

从零手写实现 mq

rocketmq java 入门案例

整体结构

|____src
| |____main
| | |____java
| | | |____com
| | | | |____ryo
| | | | | |____rocket
| | | | | | |____demo
| | | | | | | |____common
| | | | | | | | |____consumer
| | | | | | | | | |____Consumer.java
| | | | | | | | |____productor
| | | | | | | | | |____Productor.java
| | |____resources
| | | |____log4j.properties

maven 依赖

  • pom.xml
<dependencies><!--rocketmq--><dependency><groupId>com.alibaba.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>${rocketmq.version}</version></dependency><dependency><groupId>com.alibaba.rocketmq</groupId><artifactId>rocketmq-common</artifactId><version>${rocketmq.version}</version></dependency><dependency><groupId>com.alibaba.rocketmq</groupId><artifactId>rocketmq-remoting</artifactId><version>${rocketmq.version}</version></dependency><!--log--><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>1.7.7</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.7</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
</dependencies>

配置

  • log4j.properties
log4j.rootLogger=warn, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{MM-dd HH:mm:ss,SSS} - %m%n

代码

  • Consumer.java
/*** @author houbinbin* @on 17/1/2*/
public class Productor {public static void main(String[] args) {DefaultMQProducer producer = new DefaultMQProducer("Producer");producer.setNamesrvAddr("127.0.0.1:9876");try {producer.start();Message message = new Message("PushTopic", "push", "1", "Just fot test.".getBytes());SendResult result = producer.send(message);System.out.println("id:" + result.getMsgId() + " result:" + result.getSendStatus());message = new Message("PushTopic", "push", "3", "Just fot test.".getBytes());result = producer.send(message);System.out.println("id:" + result.getMsgId() + " result:" + result.getSendStatus());} catch (Exception e) {e.printStackTrace();} finally {producer.shutdown();}}
}

运行LOG如下:

id:C0A8026600002A9F000000000000011A result:SEND_OK
id:C0A8026600002A9F00000000000001A7 result:SEND_OK
  • Consumer.java
/*** @author houbinbin* @on 17/1/4*/
public class Consumer {public static void main(String[] args) {DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("PushConsumer");consumer.setNamesrvAddr("127.0.0.1:9876");try {// 订阅PushTopic下的Tag未push的消息consumer.subscribe("PushTopic", "push");// 程序第一次启动从消息队列头取数据consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);consumer.registerMessageListener(new MessageListenerConcurrently() {@Overridepublic ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {Message message = msgs.get(0);System.err.println(message.toString());return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});consumer.start();} catch (Exception e) {e.printStackTrace();}}
}

运行LOG如下:

MessageExt [queueId=1, storeSize=141, queueOffset=1, sysFlag=0, bornTimestamp=1483460812589, bornHost=/192.168.2.102:54835, storeTimestamp=1483460812590, storeHost=/192.168.2.102:10911, msgId=C0A8026600002A9F00000000000001A7, commitLogOffset=423, bodyCRC=1329428386, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message [topic=PushTopic, flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2, KEYS=3, WAIT=true, TAGS=push}, body=14]]
MessageExt [queueId=0, storeSize=141, queueOffset=1, sysFlag=0, bornTimestamp=1483460812558, bornHost=/192.168.2.102:54835, storeTimestamp=1483460812575, storeHost=/192.168.2.102:10911, msgId=C0A8026600002A9F000000000000011A, commitLogOffset=282, bodyCRC=1329428386, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message [topic=PushTopic, flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=2, KEYS=1, WAIT=true, TAGS=push}, body=14]]

小结

整体非常简单,集合官方例子即可。

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python pandas写入csv

在Python的Pandas库中&#xff0c;可以使用to_csv方法将DataFrame对象写入CSV文件。以下是一个简单的示例&#xff1a; import pandas as pd# 创建一个DataFrame对象 data {Name: [Alice, Bob, Charlie, David],Age: [25, 30, 35, 40],City: [New York, Los Angeles, Chicago…

MySQL统计信息更新

在MySQL使用“采样统计”的方式来维护统计信息。采样统计的时候&#xff0c;InnoDB默认会选择N个数据页&#xff0c;统计这些页面上的不同值&#xff0c;得到一个平均值&#xff0c;然后乘以这个索引的页面数&#xff0c;就得到了这个索引的基数。而数据表是会持续更新的&#…

怎么调用文心一言的api接口生成一个简单的聊天机器人(python代码)

寒假在学习大模型&#xff0c;但也没弄出多少眉目&#xff0c;电脑性能还有点小问题&#xff0c;大模型总跑不起来&#xff0c;只会简单调用一下现有的大模型的接口&#xff0c;例如&#xff1a;文心一言&#xff0c;下面展示一下代码&#xff1a; import tkinter as tk impor…

Postgresql中VACUUM操作原理和应用

VACUUM操作在PostgreSQL中的底层原理涉及几个关键概念&#xff0c;包括MVCC&#xff08;多版本并发控制&#xff09;、事务ID包裹、以及垃圾回收机制。我们逐一解析这些概念&#xff0c;以及它们是如何与VACUUM操作相互作用的。 关键概念 1. MVCC&#xff08;多版本并发控制&…

Mysql安装教程

一、下载 点开下面的链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文件夹…

第三节-docker-cs架构分析

一、组成 docker engine&#xff1a;docker-client、rest-api、dockerd containerd&#xff1a; 1、管理容器生命周期 2、拉取/推送镜像 3、存储管理 4、调用runc 5、管理网络 containerd-shim&#xff1a;相当于一个驱动&#xff0c;containerd通过containerd-shim驱使…

10个SQL查询方法

SQL 是管理和分析关系数据库的基本工具。掌握基本的SQL命令能够完成简单的数据查询和操作&#xff0c;但是如果想从数据中提取更有价值的信息&#xff0c;数据分析工作者和开发人员应该深入学习和掌握高级的SQL技巧。 1 窗口函数 窗口函数是指在SQL查询中对一组相关行进行聚合…

关于静态应用程序安全测试(SAST)的自动修复(AutoFix)

SAST&#xff08;Static Application Security Testing&#xff0c;静态应用程序安全测试&#xff09;具是一种在软件工程中使用的安全解决方案&#xff0c;它主要用于在程序员编写好源代码后&#xff0c;无需经过编译器编译&#xff0c;直接对源代码进行扫描&#xff0c;以找出…

SSM框架,MyBatis框架的学习(下)

MyBatis多表映射 多表结果实体类设计技巧&#xff1a; 对一&#xff0c;属性中包含对方对象 对多&#xff0c;属性中包含对方对象集合 对一查询 对一查询在设计接收多表查询的结果的实体类时&#xff0c;设计一个对方类型的属性即可 查询的结果映射时&#xff0c;如果查询的…

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

文章目录 ①. 查看、修改存储引擎②. InnoDB和MyISAM对比③. Archive引擎 - 归档④. Blackhole引擎丢数据⑤. CSV - 引擎⑥. Memory引擎 - 内存表⑦. Federated引擎 - 访问远程表⑧. Merge引擎 - 管理多个MyISAM⑨. NDB引擎 - 集群专用 ①. 查看、修改存储引擎 ①. 查看mysql提…

动态获取权限,文件管理器选择文件,I/O流

AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><!-- <uses-permission and…

链表的总结

题目&#xff1a;将26个英文字母储存在链表中 #include <stdlib.h> #include <stdio.h> struct list { char Ach; struct list* next; }; void create( struct list* head , char* ch ) 而这个head是定义在局部函数的变量&#xff0c;当出局部函数的时候&…

Kotlin的各种骚气语法

1.奇怪的中括号? 前几星期在群里见群友问这种是什么鬼,kt中有这种语法吗? 但其实这种是重写的操作符,分别是重写了setter和getter,类似于list[0]1这样 上面的两个方法声明如下: 不过这种语法很容易引起歧义,所以除非很适合的情况下不建议重写 ps:更多的操作符重载参考最下…

uniapp 部署h5,pdf预览

1.hubuilderx 打包h5。 2.上传部署包到服务器。 解压部署包&#xff1a;unzip h5.zip 。 3.nginx配置。 user root; worker_processes 1; #worker_cpu_affinity 0001 0010 0100 1000; #error_log logs/error.log; #error_log logs/error.log notice; error_log /var/l…

【工具类】repo是什么,repo常用命令,repo和git和git-repo的关系

1. repo 1. repo 1.1. repo是什么1.2. 安装1.3. repo 命令 1.3.1. repo help1.3.2. repo init1.3.3. repo sync1.3.4. repo upload1.3.5. repo start1.3.6. repo forall 1.4. mainfest 文件1.5. git-repo简介(非android repo)1.6. 参考资料 1.1. repo是什么 Repo 是一个 go…

【重温设计模式】桥接模式及其Java示例

【重温设计模式】桥接模式及其Java示例 桥接模式的介绍 今天我们要探讨的&#xff0c;正是一种名为“桥接模式”的设计模式。桥接模式&#xff0c;英文名Bridge Pattern&#xff0c;是一种结构型设计模式&#xff0c;它的主要目的是将抽象部分与实现部分分离&#xff0c;使得两…

Windows Docker 部署 Redis

部署 Redis 打开 Docker Desktop&#xff0c;切换到 Linux 内核。然后在 PowerShell 执行下面命令&#xff0c;即可启动一个 redis 服务 docker run -d --name redis -p 6379:6379 redis-如果需要自启动&#xff0c;加 --restart always 参数即可。 连接 Redis 使用客户端连…

python dictionary 字典

Python 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下 d {key1 : value1, key2 : value2, key3 : value3 }dict 作…

Vue依赖注入之Provide/Inject

1. 使用<script setup> 父组件 <template><div>这里是父组件的message值:{{ message }}</div><br /><div>这里是父组件的count值:{{ count }}</div><br /><classtest /> </template> <script setup> impor…

进程间的通信

进程间的通信方式&#xff1a; 1.管道 2.信号 3.消息队列 4.共享内存 5.信号灯 6.套接字 1.管道: 1.无名管道 无名管道只能用于具有亲缘关系的进程间通信 pipe int pipe(int pipefd[2]); 功能: 创建一个无名管道 …