- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试配置 spring-integration 以将消息发送到队列然后接收它,即一些非常简单的事情:
myApp -> outbound message -> jmsQueue -> inbound message -> myApp
我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示:
@MessagingGateway(name = "outboundGateway")
public interface OutboundGateway {
@Gateway(requestChannel = OUTBOUND_CHANNEL)
void sentMyObject(final MyObject myObject);
}
@Bean
public IntegrationFlow outboundFlow() {
return IntegrationFlows
.from(outboundChannel())
.handle(Jms.outboundAdapter(connectionFactory).destination(myQueue))
.get();
}
@Bean
public IntegrationFlow inboundFlow() {
return IntegrationFlows.from(Jms.messageDriverChannelAdapter(connectionFactory).destination(myQueue))
.channel(inboundChannel())
.handle(messageReceiverHandler())
.get();
}
其中 messageReceiverHandler() 是一个扩展 AbstractMessageHandler 的 bean。
所以上面我们有一个用于出站消息的消息网关。我的假设是我们也应该为入站消息设置一个,这样我们就可以将传入消息处理与应用程序代码分离。相反,我们只是有一个扩展 AbstractMessageHandler 的 bean,而我希望有一些网关配置。正确的用法是什么?
非常感谢。
最佳答案
首先,您通常需要使用 Jms.outboundGateway()
进行请求/回复消息传递,而不是两个单独的流;您可以让它与适配器一起工作,但它需要更多的工作,并且在这种情况下,不会提供任何好处。
您可以使用:
...
.from(outboundChannel())
.handle(Jms.outboundGateway(...))
.handle("myPojo", "someMethod")
.get();
其中 myPojo
是一个包含应用程序代码的 bean,其方法采用网关返回的类型。来自网关的回复转到流程中的下一个元素。
一般不建议继承框架类,除非有特殊需求。
编辑
但是,这需要远程系统使用 JmsReplyTo
header 进行回复。此外,您的第二个处理程序的回复将转到网关(不应有无效回复)。
对于完全异步请求/回复,您的配置是正确的,但您可以在 .handle()
中使用 POJO。
关于java - Spring Integration DSL JMS 入站/出站网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35081509/
前不久,哔哩哔哩(一般常称为 B 站)发布了一篇文章《2021.07.13 我们是这样崩的》,详细回顾了他们在 2021.07.13 晚上全站崩溃约 3 小时的至暗时刻,以及万分紧张的故障定位与恢复过
想象一下这种情况,周围有一些智能手机和计算机,它们的 WiFi 适配器(无线适配器)打开,但没有必要连接到网络。 有没有办法通过 Linux 机器查看 MAC 地址? 任何见解表示赞赏。 最佳答案 断
我无法创建新的 Window Station 来运行我的应用程序 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { wprintf(L"
在 Conda 环境中安装包后,我想对该包中的代码进行一些更改。 在哪里可以找到包含已安装包的 site-packages 目录? 我有 Anaconda Python 2.7 base 发行版,但找
今天去改了matplotlib的配置。搜索 matplotlibrc 发现我有两个: 查看site-packages 文件夹,我发现很多包的名称中都有波浪号: ~klearn 是 sklearn ,但
我是一名优秀的程序员,十分优秀!