我正在使用Spring集成jms出站通道适配器,它将消息发送到动态队列。我使用属性destination expression=“headers.DestinationQueueName”。在将出站消息写入OUT\U MSG通道之前,在代码中设置DestinationQueueName。
如何在队列上设置这些属性:MQMDMessageContext
,MQMDReadEnabled
和MQMDWriteEnabled
?
动态目标名称标头表达式很好。只需为JmsTemplate实例配置一个自定义目标解析器。
@Bean
public MQDestinationResolver mqDestinationResolver() {
return new MQDestinationResolver();
}
public class MQDestinationResolver extends DynamicDestinationResolver implements CachingDestinationResolver {
private final Map<String, Destination> destinationCache = new ConcurrentHashMap<>(16);
private boolean cache = true;
public void setCache(boolean cache) {
this.cache = cache;
}
@Override
public Destination resolveDestinationName(@Nullable Session session, String destinationName, boolean pubSubDomain)
throws JMSException {
Destination destination = this.destinationCache.get(destinationName);
if (destination == null) {
destination = super.resolveDestinationName(session, destinationName, pubSubDomain);
MQDestination mqDestination = (MQDestination) destination;
// Set IBM MQ specific destination properties
mqDestination.setMQMDReadEnabled(true);
mqDestination.setMQMDWriteEnabled(true);
mqDestination.setMessageBodyStyle(WMQConstants.WMQ_MESSAGE_BODY_UNSPECIFIED);
mqDestination.setTargetClient(WMQConstants.WMQ_CLIENT_JMS_COMPLIANT);
if (this.cache) {
this.destinationCache.put(destinationName, destination);
}
}
return destination;
}
@Override
public void removeFromCache(String destinationName) {
this.destinationCache.remove(destinationName);
}
@Override
public void clearCache() {
this.destinationCache.clear();
}
}
不如把DestinationQueueName字符串放到com的头上。ibm。mq。jms。MQQueue对象,当然还有那些选项?
问题内容: 入站和出站通道适配器之间的根本区别是什么? 任何示例都将非常有帮助。 我已经查看过Spring文档,这种“方向性”的区别对我来说还不清楚。我支持配置了outbound-channel-adapter的应用程序,但是我发现使用 出站 标签可以直观地了解行为计数器。该适配器获取一个外部文件,然后 将其 引入应用程序中, 在 该应用程序中我们解析文件并保留数据。 这类似于这个问题,但是我想更
使用Spring Integration Kafka,使用出站通道适配器,我尝试向名为“test”的主题发送消息 通过命令行终端,我启动了动物园管理员、kafka并创建了名为“test”的主题 Spring XML配置 JUnit测试代码 测试用例成功,在调试时,我发现channel.send()返回true 我使用下面的命令通过命令行检查了主题,但是我在测试主题中看不到任何消息。 bin/kaf
如何通过注释而不是常规配置文件配置入站通道适配器?我可以为会话工厂定义bean,如下所示: 如何配置通过注释下给出的入站通道适配器? 我正在寻找的是在应用程序启动时连接所有bean,然后公开一些方法来开始轮询服务器,处理它们,然后从本地删除它们,类似于 其中getPollableChannel()为我提供了用于轮询的bean。
我有一个模型对象,它是在多次转换和解析之后填充的。现在,我需要使用spring集成将模型中的消息属性发送给kafka。我可以使用messageKey方法构造键,但如何从m.getPayload()之类的模型中获取实际消息。getMessage()并将其发送给Kafka。
问题内容: Spring Integration FTP中的入站通道适配器和出站通道适配器之间有什么区别?我应该使用哪一个?何时使用? 我从文档中了解到,出站可以发送任何类型的文件(例如byte [],String,java.io.File),但入站仅限于文件类型。那仅仅是区别还是其他? 问题答案: 我建议您首先阅读理论 。 任何Inbound适配器都旨在从外部系统获取数据。Outbound-放置