- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我实现了 Message 接口(interface),以包含一些与服务器端 HeaderValueRouter 一起使用的 header 。
在一个虚拟机内,这是可行的(使用两个端点之间的过滤器进行测试)。
但是,如果我通过 HttpOutboundGatway 发送消息,我的字段将被删除(不包含在 HttpRequest 中)。因此路由信息在服务器端丢失。
我不应该操纵标题吗?
public class TaskMessage implements Message<String> {
private MessageHeaders headers;
private String payload;
public TaskMessage(String taskId, String boxId, String payload) {
super();
this.taskId = taskId;
this.boxId = boxId;
this.payload = payload;
StringMessage sm = new StringMessage(payload);
Set<String> keySet = sm.getHeaders().keySet();
HashMap<String, Object> map = new HashMap<String, Object>();
for (String key : keySet) {
map.put(key, sm.getHeaders().get(key));
}
map.put("taskId", taskId);
map.put("boxId", boxId);
headers = new MessageHeaders(map);
}
@Override
public MessageHeaders getHeaders() {
return headers;
}
@Override
public String getPayload() {
return payload;
}
}
编辑:
版本为1.0.3
我的配置部分是:
<si:inbound-channel-adapter ref="jdbcInputAdapter" method="fetchData" channel="msgChannel">
<si:poller max-messages-per-poll="1">
<si:interval-trigger interval="5000" />
</si:poller>
</si:inbound-channel-adapter>
<http:outbound-gateway id="httpChannelAdapter" auto-startup="true" request-timeout="1000" request-channel="msgChannel" reply-channel="replyChannel" default-url="http://localhost:8080/taskserver/gateway"/>
最佳答案
您使用的版本不支持(自定义) header 序列化。解决方案是制作一个包含所有所需信息的请求并将其作为有效负载传递。 2.0.x 版本中新的基于 REST 的 http 支持确实支持 header 映射,并且还公开了用于转换消息(包括 header )的扩展点。
顺便说一句,必须实现自定义消息的情况并不常见,因此我不会这样做,而是使用 MessageBuilder 创建消息
MessageBuilder.withPayload("foo").setHeader("taskId", "someTaskId").build();
一般来说,并非所有 header 都可以通过所有协议(protocol)进行传输,因此如果您想使用分布式系统,将需要发送的所有信息打包到有效负载中通常会更灵活。
关于java - MessageHeaders 在 HttpOutboundGateway 中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3262981/
我想知道在服务器端显示所有 MessageHeaders 的最佳方式是什么。实际上我知道的唯一方法如下: OperationContext.Current.IncomingMessageHeaders
我有这段代码,由于某种原因没有写名称或命名空间或属性 public class MultiSpeakHeader : MessageHeader { protected override vo
我有一些服务,其中一项使用 Grails 2.4.2 (Spring 4.0.5) 实现,一些服务作为 Spring Web (Spring 4.0.5) 实现,一项使用 Spring Boot 1.
我有一个存储在“字符串”变量中的自定义 header ,我需要用“字符串”类型变量中的 header 替换来 self 的 WCF 客户端的传出 SOAP 请求的 header 。根据研究,我发现实现
我在 WCF 中有两个单独的消息协定: [MessageContract(WrapperName = "GetFooRequest", WrapperNamespace = "http://whate
我不明白什么时候应该放 [MessageHeader] 而不是 [MessageBodyMember]? 我有read它用于符合某些协议(protocol)(如 Soap),但它最终会改变什么? 最佳
我实现了 Message 接口(interface),以包含一些与服务器端 HeaderValueRouter 一起使用的 header 。 在一个虚拟机内,这是可行的(使用两个端点之间的过滤器进行测
我正在尝试在 WCF 中使用这个简单的代码: 客户端: ServiceContractClient proxy = new ServiceContractClient(); using (Operat
我正在阅读有关 MessageContract 和 MessageHeader 的内容,并试图了解在 MessageHeader 中发送一些信息的用例,而不是将其仅用作函数参数? 最佳答案 消息契约和
如果我使用像下面这样的代码将消息 header 添加到我的 OperationContext 中,所有 future 的传出消息是否都包含从我的应用程序的相同“运行”定义的任何新 ClientProx
我正在使用以下代码添加 WCF 自定义 header MessageHeader header = MessageHeader.CreateHeader("Key", "ns", "Value");
我的处理程序中有以下行: headers.put(EMPTY_FILE, true); 原因是: 2019-11-26 13:36:29.420 ERROR 2216 --- [sub-subscri
我正在使用 openpop.net 阅读电子邮件并在检查主题后打印它们。但是我停留在第一步,MessageHeader、RfcMailAddress 和 File 显示为错误 “找不到类型或 name
我有一个使用自定义 UserNamePasswordValidator 进行保护的 WCF。我需要访问通常在以下位置可用的内容: OperationContext.Current.RequestCon
下面的代码是在 Spring Integration 2.2.6 中设置 MessageHeader 的 'NEW' 键。 public Message getFlow() { return
如何编写单元测试,因为它包括内部调用其他方法。 public class MyService implements UserDestinationResolver { @Override
我有一个向客户端公开的 JAX-WS Webservice。当客户端调用它时,messageheader 将填充UserId。当请求来自客户端时,我尝试使用实用程序类在线程本地中设置此值,并在将响应发
我是一名优秀的程序员,十分优秀!