Как изменить каждое сообщение брокера для каждого получателя внутри канала отдельно в Spring Boot? - PullRequest
0 голосов
/ 01 июля 2019

Я отправляю сообщение на канал, но мне нужно изменить его для каждого клиента.

Кто-нибудь с опытом, как это сделать?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Вот, пожалуйста.

Spring предлагает перехватчики для входящих и исходящих каналов. Просто добавьте перехватчик, и вы будете готовы перехватывать каждое входящее и исходящее сообщение и делать все, что захотите.

Сначала ваша конфигурация:

...

@Autowired
private InboundMessagesChannelInterceptor inboundMessagesChannelInterceptor;

@Autowired
private OutboundMessagesChannelInterceptor outboundMessagesChannelInterceptor;

@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
    registration.interceptors(inboundMessagesChannelInterceptor);
}

@Override
public void configureClientOutboundChannel(ChannelRegistration registration) {
    registration.interceptors(outboundMessagesChannelInterceptor);
}

...

и ваш перехватчик:

@Component
public class OutboundMessagesChannelInterceptor implements ChannelInterceptor {

    @Override
    public Message<?> preSend(Message<?> message, MessageChannel channel) {
        // modify your message as needed
        return message;
    }

}

Вот так.

0 голосов
/ 01 июля 2019

Вы можете создать контроллер @MessageMapping для настройки отправляющего сообщения в пути.

@MessageMapping("/yourDestinationName")
public String customizeMessage(Message<String> message, Principal principal) {
    return "Principal: " + principal.getName() + ", Message: " + message.getPayload();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...