当前位置:网站首页>Rabbit MQ message sending of vertx
Rabbit MQ message sending of vertx
2022-07-05 01:46:00 【Xiong Da believed what Xiong er said】
Introduce
Vert.x RabbitMQ client , Allow applications to interact with RabbitMQ Agent interactive Vert.x client (AMQP 0.9.1)
1. maven Project dependence
<dependencies> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web</artifactId> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-rabbitmq-client</artifactId> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-config-yaml</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.lance.common</groupId> <artifactId>vertx-common-core</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency></dependencies>2.YAML File configuration
server: host: 127.0.0.1 port: 18005rabbit: host: 127.0.0.1 port: 18003 username: root password: root virtualHost: /root connectionTimeout: 6000 requestedHeartbeat: 60 handshakeTimeout: 6000 requestedChannelMax: 5 networkRecoveryInterval: 500 automaticRecoveryEnabled: true3. Start loading profile , And into the config In the middle
public class RabbitmqApplication { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); ConfigRetriever retriever = readYaml(vertx); retriever.getConfig(json -> { JsonObject object = json.result(); ClientHelper dbHelper = new ClientHelper(object.getJsonObject("rabbit"), vertx); dbHelper.afterPropertiesSet(); DeploymentOptions options = new DeploymentOptions().setConfig(object); vertx.deployVerticle(MainApp.class.getName(), options); }); } private static ConfigRetriever readYaml(Vertx vertx) { ConfigStoreOptions store = new ConfigStoreOptions() .setType("file") .setFormat("yaml") .setOptional(true) .setConfig(new JsonObject().put("path", "application.yaml")); return ConfigRetriever.create(vertx, new ConfigRetrieverOptions().addStore(store)); }}4.RabbitMQ client Connection configuration
public class ClientHelper { private final JsonObject object; private final Vertx vertx; @Getter private static RabbitMQClient client; /** * initialization mail client Connect */ public void afterPropertiesSet() { ConfigProperties.MqProperties prop = object.mapTo(ConfigProperties.MqProperties.class); RabbitMQOptions config = new RabbitMQOptions(); // Each parameter is optional // The default parameter with be used if the parameter is not set config.setUser(prop.getUsername()); config.setPassword(prop.getPassword()); config.setHost(prop.getHost()); config.setPort(prop.getPort()); config.setVirtualHost(prop.getVirtualHost()); config.setReconnectAttempts(prop.getReconnectAttempts()); config.setReconnectInterval(prop.getReconnectInterval()); config.setConnectionTimeout(prop.getConnectionTimeout()); config.setRequestedHeartbeat(prop.getRequestedHeartbeat()); config.setHandshakeTimeout(prop.getHandshakeTimeout()); config.setRequestedChannelMax(prop.getRequestedChannelMax()); config.setNetworkRecoveryInterval(prop.getNetworkRecoveryInterval()); config.setAutomaticRecoveryEnabled(prop.isAutomaticRecoveryEnabled()); client = RabbitMQClient.create(vertx, config); // Connect client.start(asyncResult -> { if (asyncResult.succeeded()) { consumer(); log.warn("RabbitMQ successfully connected!"); } else { log.error("Fail to connect to RabbitMQ {}", asyncResult.cause().getMessage()); } }); } private void consumer() { client.basicConsumer(MqConst.HELLO_ROUTING_KEY, result -> { if (result.succeeded()) { RabbitMQConsumer mqConsumer = result.result(); mqConsumer.handler(message -> { log.info("Got message: {}", message.body().toString()); log.info("Message[exchange: {}, routeKey: {}] receive success!", message.envelope().getExchange(), message.envelope().getRoutingKey()); }); } else { log.error("===>Queue receive fail: ", result.cause()); } }); }}5.Email Send execution instance
public class UserService { /** * send text content */ public void sendMessage(RoutingContext ctx) { UserVo userVo = ctx.getBodyAsJson().mapTo(UserVo.class); Buffer message = Buffer.buffer(Json.encode(userVo)); ClientHelper.getClient().basicPublish(MqConst.HELLO_EXCHANGE, MqConst.HELLO_ROUTING_KEY, message, result -> { if (result.succeeded()) { log.info("Message[exchange: {}, routeKey: {}] published success!", MqConst.HELLO_EXCHANGE, MqConst.HELLO_ROUTING_KEY); } else { log.error("Message send fail: ", result.cause()); } }); ctx.json(R.success("success")); }}6. journal
2022-02-13 14:43:13.826 INFO 24 --- [ntloop-thread-1] com.lance.rabbit.service.UserService ---[ 30] : Message[exchange: hello_exchange, routeKey: hello_route_key] published success!2022-02-13 14:43:13.893 INFO 19 --- [ntloop-thread-0] com.lance.rabbit.config.ClientHelper ---[ 67] : Got message: {"name":"Jim Green","title":"book"}2022-02-13 14:43:13.893 INFO 19 --- [ntloop-thread-0] com.lance.rabbit.config.ClientHelper ---[ 68] : Message[exchange: hello_exchange, routeKey: hello_route_key] receive success!7. Full address of the project
边栏推荐
- JVM's responsibility - load and run bytecode
- 官宣!第三届云原生编程挑战赛正式启动!
- Can financial products be redeemed in advance?
- PowerShell:在代理服务器后面使用 PowerShell
- Package What is the function of JSON file? What do the inside ^ angle brackets and ~ tilde mean?
- After reading the average code written by Microsoft God, I realized that I was still too young
- MySQL regexp: Regular Expression Query
- Pytorch fine tuning (Fortune): hollowed out design or cheating
- One plus six brushes into Kali nethunter
- Great God developed the new H5 version of arXiv, saying goodbye to formula typography errors in one step, and mobile phones can also easily read literature
猜你喜欢

Five ways to query MySQL field comments!

Application and Optimization Practice of redis in vivo push platform

runc hang 导致 Kubernetes 节点 NotReady

R language uses logistic regression and afrima, ARIMA time series models to predict world population

Runc hang causes the kubernetes node notready

Nebula importer data import practice

Wechat applet: wechat applet source code download new community system optimized version support agent member system function super high income

官宣!第三届云原生编程挑战赛正式启动!

Introduction to redis (1)

Logstash、Fluentd、Fluent Bit、Vector? How to choose the appropriate open source log collector
随机推荐
Wechat applet: new independent backstage Yuelao office one yuan dating blind box
C语音常用的位运算技巧
Flutter 2.10 update details
runc hang 导致 Kubernetes 节点 NotReady
La jeunesse sans rancune de Xi Murong
JS implementation determines whether the point is within the polygon range
Educational Codeforces Round 122 (Rated for Div. 2) ABC
Expansion operator: the family is so separated
The MySQL team development specifications used by various factories are too detailed. It is recommended to collect them!
Include rake tasks in Gems - including rake tasks in gems
85.4% mIOU! NVIDIA: using multi-scale attention for semantic segmentation, the code is open source!
Win: add general users to the local admins group
One plus six brushes into Kali nethunter
phpstrom设置函数注释说明
Kibana installation and configuration
Numpy library introductory tutorial: basic knowledge summary
Application and Optimization Practice of redis in vivo push platform
Comment mettre en place une équipe technique pour détruire l'entreprise?
PowerShell:在代理服务器后面使用 PowerShell
线上故障突突突?如何紧急诊断、排查与恢复