spring.cloud.stream.rocketmq 广播

依赖

    // rocketmq
    compile 'com.alibaba.cloud:spring-cloud-starter-stream-rocketmq:2.1.2.RELEASE'
    compile 'org.springframework.cloud:spring-cloud-stream'
    // javax.el
    compile ('org.glassfish.web:javax.el:2.2.4') {
        exclude group: 'javax.el', module: 'javax.el-api'
    }

生产者

spring.cloud.stream.bindings.test-broadcast-topic.destination = test_broadcast_topic
spring.cloud.stream.rocketmq.bindings.test-broadcast-topic.producer.sync = true
spring.cloud.stream.bindings.test-broadcast-topic.content-type = application/json

消费者

spring.cloud.stream.bindings.test-broadcast-topic.destination = test_broadcast_topic
spring.cloud.stream.bindings.test-broadcast-topic.content-type = application/json
spring.cloud.stream.bindings.test-broadcast-topic.group=test
spring.cloud.stream.rocketmq.bindings.test-broadcast-topic.consumer.enabled = true
spring.cloud.stream.rocketmq.bindings.test-broadcast-topic.consumer.broadcasting = true

import com.mature.foundation.constant.Constant;
import com.mature.foundation.context.RequestContext;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;

import javax.inject.Inject;

@Component
@RequiredArgsConstructor(onConstructor_ = {@Inject})
@Slf4j
@EnableBinding({TestSource.class})
public class TestManager extends BaseManager {

    private final TestSource testSource;


    public void publishMessage(String msg) {
        Message<String> message = MessageBuilder.withPayload(msg)
                .setHeader(Constant.REQUEST_ID, RequestContext.getRequestId())
                .setHeader(Constant.SPAN_ID, RequestContext.getSpanId())
                .build();

        boolean sendResult = testSource.test().send(message);
        log.info("send result: {}", sendResult);

    }
}

public interface TestSource {

    @Output("test-broadcast-topic")
    MessageChannel test();

}

生产者发起


public class Test extends BaseTest {


    @Resource
    private TestManager testManager;

    @Test
    public void test() throws Exception {
        testManager.publishMessage("hahsh");

    }
}

消费者代码

启动类:这里不加就要在handler上加

@EnableBinding({
        TestSink.class
})
public interface TestSink {

    @Input("test-broadcast-topic")
    SubscribableChannel testTopic();
}
@Slf4j
@Component
@EnableBinding(TestSink.class)
@RequiredArgsConstructor(onConstructor_ = {@Inject})
public class TestHandler {


    @StreamListener("test-broadcast-topic")
    public void handleTest(@Payload String payload) {
        log.info("接收test任务通知: {}", JsonUtil.toJsonString(payload));
    }
}

stream 消息驱动,约定大于配置,只要生产者和消费者的信道,也就是@input() 和@output()里面的值和exchange一致,其实不用配置文件中写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`spring.cloud.nacos.discovery` 是 Spring Cloud Alibaba Nacos Discovery 的配置属性,用于指定 Nacos 注册中心的。以下是全部的及示例: ```properties # Nacos 服务器地址,多个地址用逗号分隔 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 # 命名空间 ID spring.cloud.nacos.discovery.namespace= # Nacos 访问协议 spring.cloud.nacos.discovery.protocol=http # 应用程序名称 spring.cloud.nacos.discovery.service=example-service # 应用程序的 IP 地址 spring.cloud.nacos.discovery.ip=192.168.1.100 # 应用程序的端口号 spring.cloud.nacos.discovery.port=8080 # 健康检查 URL 路径 spring.cloud.nacos.discovery.health-check-url=/health # 健康检查间隔时间,单位为秒 spring.cloud.nacos.discovery.heartbeat-interval=5 # 注册实例的权重,用于负载均衡,默认值为 1 spring.cloud.nacos.discovery.weight=1 # 集群名称 spring.cloud.nacos.discovery.cluster-name= # 分组名称 spring.cloud.nacos.discovery.group-name= # 服务的元数据,可以用于自定义扩展 spring.cloud.nacos.discovery.metadata.mykey=myvalue ``` 示例: ```properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.namespace= spring.cloud.nacos.discovery.protocol=http spring.cloud.nacos.discovery.service=example-service spring.cloud.nacos.discovery.ip=192.168.1.100 spring.cloud.nacos.discovery.port=8080 spring.cloud.nacos.discovery.health-check-url=/health spring.cloud.nacos.discovery.heartbeat-interval=5 spring.cloud.nacos.discovery.weight=1 spring.cloud.nacos.discovery.cluster-name= spring.cloud.nacos.discovery.group-name= spring.cloud.nacos.discovery.metadata.mykey=myvalue ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值