TLDR: я хочу знать, как подключиться к очереди JMS в памяти, созданной с помощью весенней загрузки java и конфигурации по умолчанию, с использованием верблюжьей вершины apache.В настоящее время я пытаюсь подключиться, но он продолжает показывать ошибку:
Не удалось подключиться к [tcp: // localhost: 61616] после: 10 попыток повторных попыток.
Я попытался отредактировать свойства, чтобы изменить конфигурацию и маршрутизацию, добавив параметры, но безуспешно.Любая помощь приветствуется.Я оставляю весь код ниже для тех, кому нужны подробности.
MainApplication.java
public class MainApplication{
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
JmsConfiguration.java:
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.core.JmsTemplate;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Queue;
@Configuration
@EnableJms
public class JmsConfiguration {
@Autowired
private BeanFactory springContextBeanFactory;
@Bean
public Queue queue(){
return new ActiveMQQueue("inmemory.queue");
}
@Bean
public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) throws JMSException {
return new JmsTemplate(connectionFactory);
}
}
Producer.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.web.bind.annotation.*;
import javax.jms.Queue;
@RestController
@RequestMapping("publish")
public class Producer {
@Autowired
private JmsTemplate jmsTemplate;
@Autowired
private Queue queue;
@GetMapping("/{message}")
public String publishString(@PathVariable("message") final String message){
jmsTemplate.convertAndSend(queue, message);
return "published succesfully";
}
}
Consumer.java
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class Consumer {
@JmsListener(destination = "inmemory.queue")
public void listener(String message){
System.out.println("Receiveage: -> " +message);
}
}
application-default.yml
spring:
activemq:
in-memory: true
pool:
enabled: false
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
</dependency>
Затем настроен маршрут Apache Camel:
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class FooRoute extends RouteBuilder {
@Override
public void configure() {
// sender
from("foo-bar")
.to("activemq:queue:inmemory.queue");
// receiver
from("activemq:queue:inmemory.queue")
.to("bar-foo");
}
}
Журнал с сервера:
2018-12-30 15:12:04,549 INFO [main] org.apache.activemq.broker.BrokerService : Using Persistence Adapter: MemoryPersistenceAdapter
2018-12-30 15:12:04,624 INFO [JMX connector] org.apache.activemq.broker.jmx.ManagementContext : JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
2018-12-30 15:12:04,757 INFO [main] org.apache.activemq.broker.BrokerService : Apache ActiveMQ 5.14.5 (localhost, ID:hostname-12345-1234567890123-0:1) is starting
2018-12-30 15:12:04,770 INFO [main] org.apache.activemq.broker.BrokerService : Apache ActiveMQ 5.14.5 (localhost, ID:hostname-12345-1234567890123-0:1) started
2018-12-30 15:12:04,770 INFO [main] org.apache.activemq.broker.BrokerService : For help or more information please see: http://activemq.apache.org
2018-12-30 15:12:04,995 INFO [main] org.apache.activemq.broker.TransportConnector : Connector vm://localhost started
2018-12-30 16:01:49,872 WARN [ActiveMQ Task-1] org.apache.activemq.transport.failover.FailoverTransport : Failed to connect to [tcp://localhost:61616] after: 10 attempt(s) continuing to retry.