Реализуются 2 одинаковых слушателя JMS вместо 1ого. ActiveMQ. И не удается передать и принять объект

Здравствуйте пишу приложение на Spring (не использую Spring Boost). Приложение использует JMS брокер ActiveMQ.

Слушатель:

@Component
public class ReceiveMessage {

private HistoryService historyService;

@Autowired
public void setHistoryService(HistoryService historyService) {

    this.historyService = historyService;
}

 @JmsListener(destination = "my_topic")
public void receiveMessage(ObjectMessage objectMessage) throws JMSException {

    Object object = ((ObjectMessage) objectMessage).getObject();
    System.out.println(object);
    if(objectMessage.getObject() instanceof History) {
        History history = (History) objectMessage.getObject();
        try {
            historyService.add(history);
        } catch (Exception e) {
            System.out.println(e.toString());
        }
 }

Отправитель:

@Component
public class MessageProducer {

@Autowired
JmsTemplate jmsTemplate;

public void sendMessage(History history) {
   jmsTemplate.send("my_topic", new MessageCreator() {
        public Message createMessage(Session session) throws JMSException {
            ObjectMessage objectMessage = session.createObjectMessage(history);
            return objectMessage;
        }
    }
    );
        }
}

Конфигурация JMS

@Configuration
@EnableJms
@ComponentScan(basePackages = "com.mycomp")
public class JMSConfig {

String BROKER_URL = "tcp://localhost:61616";
String BROKER_USERNAME = "admin";
String BROKER_PASSWORD = "admin";

@Bean
public ActiveMQConnectionFactory connectionFactory(){
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
    connectionFactory.setBrokerURL(BROKER_URL);
    connectionFactory.setPassword(BROKER_USERNAME);
    connectionFactory.setUserName(BROKER_PASSWORD);
    return connectionFactory;
}


@Bean
public JmsTemplate jmsTemplate(){
    JmsTemplate template = new JmsTemplate();
    template.setConnectionFactory(connectionFactory());
    template.setPubSubDomain(true); // для работы с topic
    //утсановка места назначения для отправки и приема по умалчанию
  // Destination defaultDestination = new ActiveMQTopic("my_topic");
  // template.setDefaultDestination(defaultDestination);

    return template;
}



@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory());
    factory.setConcurrency("1-1");

    factory.setPubSubDomain(true); // для работы с topic
    return factory;
}

}

класс History:

@Entity (name = "History")
@Table(name = "HISTORY", schema = "PUBLIC")
public class History implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private long id;

@Column(name = "CHANGETYPE")
private String changeType;

@Column(name = "CHANGEENTITY")
private String changeEntity;

@Column(name = "VALUE")
private String value;

public History(){
}
// сеттеры геттеры

ActiveMQ: ActiveMq Проблемы:

1) в том что вместо 1 слушателя реализуются 2 слушателя.

2) не получается привеcти объект при получении сообщения к типу History.

Попробовал глянуть что отправляется и принимается в режиме debug

Отправка в MessageProducer: send

Вот что принимается в ReciveMessage:

recive

Но вроде какие-то данные лежат тут: data


Ответы (0 шт):