Потребитель не может получать сообщения из очереди - ActiveMQ ArtemisJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Потребитель не может получать сообщения из очереди - ActiveMQ Artemis

Сообщение Anonymous »

Я хотел бы получать сообщения с помощью прослушивателя JMS, однако прослушиватель не может обрабатывать сообщения.
Это моя конфигурация для встроенного брокера Artemis.

Код: Выделить всё

@Component
@EnableJms
public class ArtemisConfig {
private static final String TOPIC_NAME = "myTopic";

@Bean
public static ConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory("tcp://localhost:61616");
return new CachingConnectionFactory(connectionFactory);
}

@Bean
public void activeMQServer() throws Exception {
Configuration configuration = new ConfigurationImpl();
configuration.setPersistenceEnabled(false);
configuration.setSecurityEnabled(false);

Map params = new HashMap();
params.put("host", "localhost");
params.put("port", 61616);
params.put("Schema", "tcp");
TransportConfiguration transportConfiguration =
new TransportConfiguration(
NettyAcceptorFactory.class.getName(), params);

configuration.setAcceptorConfigurations(
Collections.singleton(transportConfiguration));

ActiveMQServer server =
ActiveMQServers.newActiveMQServer(configuration);

CoreAddressConfiguration coreAddressConfiguration =
new CoreAddressConfiguration();
coreAddressConfiguration.setName(TOPIC_NAME)
.addRoutingType(RoutingType.MULTICAST);
configuration.addAddressConfiguration(coreAddressConfiguration);

QueueConfiguration queueConfiguration =
new QueueConfiguration(TOPIC_NAME);
queueConfiguration.setAddress(TOPIC_NAME);
queueConfiguration.setName(TOPIC_NAME);
queueConfiguration.setRoutingType(RoutingType.MULTICAST);
queueConfiguration.setDurable(true);
configuration.addQueueConfiguration(queueConfiguration);

server.start();
}

@Bean(name = "jmsTemplate")
public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
return jmsTemplate;
}

@Bean
public JmsListenerContainerFactory myFactory(
ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
factory.setPubSubDomain(true);
factory.setConcurrency("1-4");
return factory;
}
}
Это мой прослушиватель, который получает сообщение из очереди

Код: Выделить всё

@Component
public class ArtemisListener {

@JmsListener(destination = "myTopic", containerFactory = "myFactory")
public void listener(Message message){
System.out.println("Message received");
}
}
Я запускаю тест. В журналах я вижу, что очередь создана, сообщение отправляется на указанный адрес, а также создается потребитель, но сообщение не используется. .

Код: Выделить всё

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ArtemisConfig.class})
public class ArtemisIT {

@Autowired
JmsTemplate jmsTemplate;

@Test
public void checkIfListenerWorks() throws InterruptedException {
jmsTemplate.convertAndSend("myTopic", "Hello");
Thread.sleep(2000);
}
}
Я не вижу сообщения «Получено сообщение» в своих журналах.

Код: Выделить всё

AMQ601065: User anonymous is creating a queue on target resource: ServerSessionImpl(jms-session=*N/A*) [with parameters: [QueueConfiguration [id=null, name=730d9da3-3d8c-4042-8ef8-c51788f646a5, address=myTopic, routingType=MULTICAST, filterString=null, durable=false, user=null, maxConsumers=-1, exclusive=null, groupRebalance=null, groupBuckets=null, groupFirstKey=null, lastValue=null, lastValueKey=null, nonDestructive=null, purgeOnNoConsumers=false, consumersBeforeDispatch=null, delayBeforeDispatch=null, consumerPriority=null, autoDelete=null, autoDeleteDelay=null, autoDeleteMessageCount=null, ringSize=null, configurationManaged=null, temporary=true, autoCreateAddress=null, internal=null, transient=null, autoCreated=false]]]

AMQ601265: User anonymous is creating a core consumer on target resource ServerSessionImpl(jms-session=*N/A*) [with parameters: [0, 730d9da3-3d8c-4042-8ef8-c51788f646a5, null, 0, false, true, null]]

AMQ601500: User anonymous is sending a core message on target resource: ServerSessionImpl(jms-session=*N/A*) [with parameters: [TransactionImpl [xid=null, txID=13, xid=null, state=ACTIVE, createTime=1721642690458(Mon Jul 22 10:04:50 UTC 2024), timeoutSeconds=300, nr operations = 0]@78c18d2c, CoreMessage[messageID=0,durable=true,userID=d57b5c8f-4811-11ef-b49b-8045dd328039,priority=4, timestamp=Mon Jul 22 10:04:50 UTC 2024,expiration=0, durable=true, address=myTopic,size=480,properties=TypedProperties[__AMQ_CID=d5352bca-4811-11ef-b49b-8045dd328039,_AMQ_ROUTING_TYPE=1]]@1550453457, true, false, RoutingContextImpl(Address=null, routingType=null, PreviousAddress=null previousRoute:null, reusable=null, version=0)
Требуются ли какие-либо изменения в моей конфигурации? Поскольку я вижу журналы выключения сервера сразу после отправки сообщения.

Подробнее здесь: https://stackoverflow.com/questions/787 ... mq-artemis
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»