美文网首页
springboot+nats集成

springboot+nats集成

作者: cjlynn | 来源:发表于2022-02-16 17:30 被阅读0次

简介
结合上一文,安装部署,go测试例子之后,这次应用到springboot上,使用github封装的用例,
https://github.com/wanlinus/nats-spring.git

案例

1、application-nats.yml

spring:
  nats:
    natsUrls:
      - nats://192.168.2.246:4222

2、java junit测试


import com.alibaba.fastjson.JSON;
import io.nats.client.Connection;
import io.nats.client.Message;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.nio.charset.StandardCharsets;
import java.time.Duration;

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
@EnableNats
public class ConsoleApiTest {

    @Autowired
    private Connection connection;

    @Subscribe("data")
    public void sub(Message message) {
        log.info("<<<=== subject={}, data={}", message.getSubject(), new String(message.getData()));
    }

    @Test
    public void pub() {
        log.info(connection.getConnectedUrl());
        connection.publish("data", "data测试数据".getBytes(StandardCharsets.UTF_8));
        try {
            connection.flush(Duration.ZERO);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            Message data = connection.request("data", "data request测试数据".getBytes(StandardCharsets.UTF_8), Duration.ofSeconds(1));
            log.info("subject={}, data={}, replyTo={}", data.getSubject(), new String(data.getData()), data.getReplyTo());
            log.info(JSON.toJSONString(data));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
//        while (true);
    }
}

3、测试结果:

17:19:00.501 [main] INFO  c.m.c.c.a.ConsoleApiTest - [message,34] - nats://192.168.2.246:4222
17:19:00.524 [nats:3] INFO  c.m.c.c.a.ConsoleApiTest - [message,29] - <<<===subject=data, data=data测试数据
17:19:00.528 [nats:3] INFO  c.m.c.c.a.ConsoleApiTest - [message,29] - <<<===subject=data, data=data request测试数据

完成。

go(reply)、java(request)

如果要看到java request返回的内容,开启上一文go nats安装使用 四、请求-回复go测试代码 中的 reply.go测试。
reply.go

package main

import (
    "encoding/json"
    "github.com/nats-io/nats.go"
    "log"
    "runtime"
)

func main() {
    nc, err := nats.Connect("192.168.2.246:4222")
    if err != nil {
        log.Fatal("connect error")
    }
    nc.Subscribe("data", func(m *nats.Msg) {
        result, _ := json.Marshal(m)
        log.Println("<<<=== ", string(m.Data), "\r\nm=", string(result))
        //time.Sleep(5 * time.Second)
        pubstr := "reply.go Publish content."
        log.Println("===>>> ", pubstr, ", replyTo=", m.Reply)
        nc.Publish(m.Reply, []byte(pubstr))
    })
    runtime.Goexit()
}

运行:

go run reply.go

相关文章

  • springboot+nats集成

    简介结合上一文,安装部署,go测试例子之后,这次应用到springboot上,使用github封装的用例,http...

  • 【3】企业集成EAI概要

    企业应用集成(EAI)可以包括表示集成、数据集成、控制集成和业务流程集成等多个层次和方面。 1.表示集成表示集成也...

  • 集成Facebook广告、分享集成笔记

    集成Facebook广告、分享集成笔记 1、集成Facebook广告2、集成Facebook分享 Facebook...

  • iOS原生集成H5+详细流程

    iOS原生集成H5+ 集成方式 独立应用方式集成 Widget方式集成 WebView方式集成 可以打开官方链接:...

  • iOS开发 - SMSSDK(短信验证)

    Mob 的SMS短信验证集成和使用 1.集成##### 集成可以用cocoapods来集成,也可以手动集成,这里就...

  • SpringBoot 集成

    SpringBoot 集成 redis SpringBoot集成mongodb SpringBoot集成Beetl...

  • 竹木纤维集成墙面好不好

    竹木纤维集成墙面优点 集成墙板十大品牌排名竹木纤维集成墙面用户集成墙面价格表 竹木纤维集成墙面 新型集成墙面装饰板...

  • iOS 友盟分享

    前言:学习笔记大致流程: (只记录 pod集成)1.集成SDK 1.1 自动集成 (Pod) [集成链接](...

  • 软件测试基础

    测试流程 单元 > 集成 > 系统 > 验收 集成测试 主要分为:一次性集成和增殖式集成。 一次性集成 自顶向下 ...

  • Android原生集成Flutter的两种方式

    Android原生集成flutter分为两种方式:源码集成和aar集成 一、Flutter源码集成 将Flutte...

网友评论

      本文标题:springboot+nats集成

      本文链接:https://www.haomeiwen.com/subject/wxsdlrtx.html