package org.bs.messaging; import org.springframework.amqp.rabbit.core.RabbitMessagingTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.Serializable; import java.util.HashMap; import java.util.Map; @Component public class RabbitMessagingServiceImpl implements MessagingService { @Autowired private RabbitMessagingTemplate messagingTemplate; @Autowired private JsonMessageSerializer messageSerializer; private static final String MESSAGE_TYPE = "MessageType"; @Override public <T extends Serializable> void send(String queue, T data) { Map<String, Object> header = new HashMap<>(); header.put(MESSAGE_TYPE, data.getClass().getName()); String json = messageSerializer.getJson(data); this.messagingTemplate.convertAndSend(queue, (Object)json, header); } }