springCloud-Alibaba——stream自定义消费者接口

目录

(1)创建接口:

(2)修改启动类:

(3)修改配置文件:

(4)编写代码:

(5)启动测试:

(6)常见异常:

A、ibatis.binding异常:


(1)创建接口:

创建一个自定义消费者的binding对应的接口,在接口中写一个input()方法,返回值为SubscribableChannel,并在方法上添加注解input,指定一个自定义的binding常量值,这个常量值是与配置文件中写的那个自定义binding值保持一致。

springCloud-Alibaba——stream自定义消费者接口_第1张图片

(2)修改启动类:

在启动类上,绑定刚刚创建的自定义binding对应的那个接口。

springCloud-Alibaba——stream自定义消费者接口_第2张图片

(3)修改配置文件:

在配置文件中,添加一个自定义的binding的信息,注意binding绑定的名字要与对应接口中定义的常量字符串保持一致。

springCloud-Alibaba——stream自定义消费者接口_第3张图片

(4)编写代码:

创建一个实体类,类上添加service注解,在类中创建一个方法,方法有一个string类型的参数(该参数就是消息体),方法上添加StreamListener,并指定刚才创建自定义接口中的自定义常量。

springCloud-Alibaba——stream自定义消费者接口_第4张图片

(5)启动测试:

启动消息消费者,就会打印对应rocketmq中已存在的未消费的消息内省,并且对应topic的生产者发送一条消息,消费者也会马上打印该消息内容。这就表明stream自定义生产者接口成功了,按照这种模式,可以根据自己实际业务需要,配置若干个不同的自定义接口来完成各种业务数据的消费了。

(6)常见异常:

A、ibatis.binding异常:

如果项目中使用了mybatis,那么可能会在使用消息队列的时候,应该会报一个异常:org.apache.ibatis.binding.BindingException,它会因为写mq自定义的接口为mybatis的接口,结果因为找不到对应的xml而报错。

解决方法:我们只需要精确mybatis的接口扫描路径,不让它扫描到我们写的mq的接口即可。

你可能感兴趣的:(stream)