对口网站怎么做/槐荫区网络营销seo
上一篇博客介绍了基于java的NATS的发布订阅模式。
今天发现其实服务器我们可以不用启动,因为nats为我们提供了一个服务器,可以用来测试。
demo.nats.io
好的,我们直接进入今天的主题。
今天采用一个 simple Java client for NATS
参考地址
NATS学习 – 概念学习之消息(Message)与发布订阅(Publish Subscribe)
使用很简单
依赖的jar包
<!--主要依赖的-->
<dependency><groupId>com.github.cloudfoundry-community</groupId><artifactId>nats-client</artifactId><version>0.6.4</version>
</dependency>
<!--nats-client依赖-->
<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>5.0.0.Alpha2</version>
</dependency>
<!--需要的jackson依赖-->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.4.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.4.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.4.0</version>
</dependency>
<!--需要的日志依赖-->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.21</version>
</dependency>
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version>
</dependency>
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>
Publish.java
import java.util.Scanner;import nats.client.Nats;
import nats.client.NatsConnector;public class Publish {public static void main(String[] args) {Nats nats = new NatsConnector().addHost("nats://demo.nats.io:4222").connect();@SuppressWarnings("resource")Scanner scanner = new Scanner(System.in);System.out.println("请输入字符串:");while (true) {String line = scanner.nextLine();// 发布消息nats.publish("hello", line);}}}
Subscribe.java
package com.gwc.mavenlearn.jnats;import java.util.concurrent.TimeUnit;import nats.client.Message;
import nats.client.MessageHandler;
import nats.client.MessageIterator;
import nats.client.Nats;
import nats.client.NatsConnector;
import nats.client.Subscription;public class Subscribe {public static void main(String[] args) {Nats nats = new NatsConnector().addHost("nats://demo.nats.io:4222").connect();Subscription subscription = nats.subscribe("hello");// 多个消息处理器// Multiple message handlerssubscription.addMessageHandler(new MessageHandler() {public void onMessage(Message message) {System.out.println("Handler 1");System.out.println(message.getBody());}});subscription.addMessageHandler(new MessageHandler() {public void onMessage(Message message) {System.out.println("Handler 2");System.out.println(message.getBody());}});// 下面的程序主要是为了不让程序退出,不退出才能收到消息// 可以有如下三种方式不让程序退出// Block until a message arrives (message handlers still get called)MessageIterator iterator = subscription.iterator();Message message = iterator.next();// Or we can block for a limited amount of time// message = iterator.next(1, TimeUnit.MINUTES);// Or we can just use a for loop/*for (Message message1 : subscription) {System.out.println(message1);}*/}}
实验
就绪的Subscribe
就绪的Publish
发消息和收消息
发消息
收消息
关于日志的配置,参考上一篇博客
NATS学习 – 概念学习之消息(Message)与发布订阅(Publish Subscribe)
参考文献
simple Java client for NATS
NATS API Documentation