-
Notifications
You must be signed in to change notification settings - Fork 16
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
streaam-client version: 0.14.0
Create a RabbitListener and set it's property autoStartup = "false", but startup the listener fail manually at later. Because the listener lost the host and port attributes, and always try to connect localhost:5552.
define listener
// define a no-autoStartup listener
@RabbitListener(queues = "test-queue", autoStartup = "false", containerFactory = "secondStreamRabbitListenerContainerFactory")
public void onSecondStreamMessage(com.rabbitmq.stream.Message message, Context context) throws IOException
{
// do something .
}startup listener manually
@Component
public class RabbitmqReadOnlyEventListener
{
@Autowired
private RabbitListenerEndpointRegistry registry;
private void doSwitch(boolean readOnly)
{
if(readOnly)
registry.stop();
else
registry.start();
}
}When I try to startup the listener, it would output the next errors (try to connect localhost:5552):
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-12-08 17:59:28.677 INFO [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-2] o.s.a.rabbit.listener.SimpleMessageListenerContainer#lambda$shutdownAndWaitOrCallback$2(L:645) -> Waiting for workers to finish.
2023-12-08 17:59:28.679 INFO [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2] o.s.a.rabbit.listener.SimpleMessageListenerContainer#lambda$shutdownAndWaitOrCallback$2(L:645) -> Waiting for workers to finish.
2023-12-08 17:59:29.316 INFO [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#0-2] o.s.a.rabbit.listener.SimpleMessageListenerContainer#lambda$shutdownAndWaitOrCallback$2(L:649) -> Successfully waited for workers to finish.
2023-12-08 17:59:29.340 INFO [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#1-2] o.s.a.rabbit.listener.SimpleMessageListenerContainer#lambda$shutdownAndWaitOrCallback$2(L:649) -> Successfully waited for workers to finish.
2023-12-08 17:59:33.447 ERROR [main] o.s.b.SpringApplication#reportFailure(L:824) -> Application run failed
com.rabbitmq.stream.impl.ConnectionStreamException: Error while creating stream connection to localhost:5552
at com.rabbitmq.stream.impl.Client.<init>(Client.java:326) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.Utils.lambda$null$9(Utils.java:158) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.Utils$ExactNodeRetryClientFactory.client(Utils.java:313) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.Utils.lambda$coordinatorClientFactory$10(Utils.java:159) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.ProducersCoordinator$ClientProducersManager.<init>(ProducersCoordinator.java:688) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.ProducersCoordinator$ClientProducersManager.<init>(ProducersCoordinator.java:559) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.ProducersCoordinator.addToManager(ProducersCoordinator.java:159) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.ProducersCoordinator.registerAgentTracker(ProducersCoordinator.java:113) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.ProducersCoordinator.registerTrackingConsumer(ProducersCoordinator.java:104) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.StreamEnvironment.registerTrackingConsumer(StreamEnvironment.java:797) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.StreamConsumer.<init>(StreamConsumer.java:98) ~[stream-client-0.14.0.jar:0.14.0]
at com.rabbitmq.stream.impl.StreamConsumerBuilder.build(StreamConsumerBuilder.java:238) ~[stream-client-0.14.0.jar:0.14.0]
at org.springframework.rabbit.stream.listener.StreamListenerContainer.start(StreamListenerContainer.java:237) ~[spring-rabbit-stream-3.0.10.jar:3.0.10]
at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.startIfNecessary(RabbitListenerEndpointRegistry.java:289) ~[spring-rabbit-3.0.10.jar:3.0.10]
at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.start(RabbitListenerEndpointRegistry.java:239) ~[spring-rabbit-3.0.10.jar:3.0.10]
at io.github.hpsocket.soa.starter.rabbitmq.consumer.listener.RabbitmqReadOnlyEventListener.doSwitch(RabbitmqReadOnlyEventListener.java:42) ~[classes/:?]
at io.github.hpsocket.soa.starter.rabbitmq.consumer.listener.RabbitmqReadOnlyEventListener.onApplicationEvent(RabbitmqReadOnlyEventListener.java:33) ~[classes/:?]
at io.github.hpsocket.soa.starter.rabbitmq.consumer.listener.RabbitmqReadOnlyEventListener.onApplicationEvent(RabbitmqReadOnlyEventListener.java:14) ~[classes/:?]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:174) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:445) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-6.0.14.jar:6.0.14]
at io.github.hpsocket.soa.framework.web.holder.SpringContextHolder.publishEvent(SpringContextHolder.java:41) ~[classes/:?]
at io.github.hpsocket.soa.framework.web.listener.ReadOnlyContextRefreshedEventListener.onApplicationEvent(ReadOnlyContextRefreshedEventListener.java:26) ~[classes/:?]
at io.github.hpsocket.soa.framework.web.listener.ReadOnlyContextRefreshedEventListener.onApplicationEvent(ReadOnlyContextRefreshedEventListener.java:15) ~[classes/:?]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:174) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:445) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:969) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:619) ~[spring-context-6.0.14.jar:6.0.14]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.6.jar:3.1.6]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:738) ~[spring-boot-3.1.6.jar:3.1.6]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:440) ~[spring-boot-3.1.6.jar:3.1.6]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-3.1.6.jar:3.1.6]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.6.jar:3.1.6]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.6.jar:3.1.6]
at io.github.hpsocket.soa.framework.web.server.main.AppStarter.main(AppStarter.java:39) ~[classes/:?]
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: localhost/127.0.0.1:5552
Caused by: java.net.ConnectException: Connection refused: no further information
at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[?:?]
at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:946) ~[?:?]
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.101.Final.jar:4.1.101.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.101.Final.jar:4.1.101.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.101.Final.jar:4.1.101.Final]
at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
I step into the code of com.rabbitmq.stream.impl.Utils#coordinatorClientFactory(), variable address always is 'localhost:5552'.
static ClientFactory coordinatorClientFactory(StreamEnvironment environment) {
return context -> {
ClientParameters parametersCopy = context.parameters().duplicate();
// address always is 'localhost:5552'
Address address = new Address(parametersCopy.host(), parametersCopy.port());
address = environment.addressResolver().resolve(address);
parametersCopy.host(address.host()).port(address.port());
if (context.key() == null) {
throw new IllegalArgumentException("A key is necessary to create the client connection");
}
// ... ...
}but the environment param is right:

Reproduction steps
- create a no-autostartup listener
- startup application
- startup listener manually at later
Expected behavior
startup listener succ
Additional context
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working