J'ai implémenté l'interface Message pour inclure certains en-têtes à utiliser avec un HeaderValueRouter côté serveur. Au sein d'une même machine virtuelle, cela fonctionne (testé à l'aide d'un filtre entre deux extrémités). Mais si j'envoie le message via HttpOutboundGatway, mes champs seront supprimés (non inclus dans la demande HttpRequest). Et par conséquent, les informations de routage sont perdues du côté serveur.MessageHeaders se perdre à HttpOutboundGateway
Ne suis-je pas censé manipuler les en-têtes?
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;
}
}
EDIT:
La version 1.0.3
La partie de ma configuration est:
<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"/>
@iwein J'ai ajouté la version et la config (partielle) à la question. Je voudrais savoir pourquoi les en-têtes sont dépouillés de mon message. Merci d'avance. – stacker
réponse mise à jour en conséquence – iwein
@iwein merci beaucoup, j'ai changé la charge de paiement à o carte de chaîne, chaîne cela fonctionne maintenant – stacker