我是ActiveMQ中的新成员,我需要创建spring引导应用程序,其中包含publis activeMQ队列。因此,我创建的简单SpringBoot应用Spring Boot ActiveMQ - 端口已在使用中:1099
@SpringBootApplication
@EnableJms
public class Application {
@Bean
JmsListenerContainerFactory<?> myJmsContainerFactory(ConnectionFactory connectionFactory) {
SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
public static void main(String[] args) {
FileSystemUtils.deleteRecursively(new File("activemq-data"));
// Launch the application
ApplicationContext context = SpringApplication.run(Application.class, args);
System.out.println(" ************************ Asyn queue start ************************ ");
}
}
然后,我创建了一个Listneres还有:
@Component
public class Receiver {
@Autowired
ConfigurableApplicationContext context;
@JmsListener(destination = "mailbox-destination", containerFactory = "myJmsContainerFactory")
public void receiveMessageFromMailbox(String message) {
System.out.println("Received <" + message + "> mailbox");
//context.close();
FileSystemUtils.deleteRecursively(new File("activemq-data"));
}
@JmsListener(destination = "testqueue-destination", containerFactory = "myJmsContainerFactory")
public void receiveMessageFromTestQueue(String message) {
System.out.println("Received <" + message + "> testqueue");
//context.close();
FileSystemUtils.deleteRecursively(new File("activemq-data"));
}
}
后,我开始它,它看起来确定。
为了测试我创建了一个简单的测试:
public class Testing {
public static void main(String[] args) throws JMSException {
try {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();
// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue("testqueue-destination");
// Create a MessageProducer from the Session to the Topic or Queue
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// Create a messages
String text = "Hello world! From: " + Thread.currentThread().getName() + " : ";
TextMessage message = session.createTextMessage(text);
// Tell the producer to send the message
System.out.println("Sent message: "+ message.hashCode() + " : " + Thread.currentThread().getName() + " : " + message);
producer.send(message);
// Clean up
session.close();
connection.close();
} catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
}
但是当我运行Testing.main则错误发生:
[主要] DEBUG org.apache.activemq.broker.jmx.ManagementContext - 无法创建本地注册表 java.rmi.server.ExportException:端口已在使用中:1099;嵌套的异常是: java.net.BindException:已在使用的地址:JVM_Bind at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:341) at sun.rmi.transport.tcp.TCPTransport.exportObject (TCPTransport.java:249) at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) at sun.rmi .server.UnicastServerRef.exportObject(UnicastServerRef.java:208) at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:152) at sun.rmi.registry.RegistryImpl。(RegistryImpl.java:112) at java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:239) at org.apache.activemq.broker.jmx.ManagementCont ext.createConnector(ManagementContext.java:418) at org.apache.activemq.broker.jmx.ManagementContext.findTigerMBeanServer(ManagementContext.java:363) at org.apache.activemq.broker.jmx.ManagementContext.findMBeanServer(ManagementContext。的java:330) 在org.apache.activemq.broker.jmx.ManagementContext.getMBeanServer(ManagementContext.java:172) 在org.apache.activemq.broker.jmx.ManagementContext.start(ManagementContext.java:80) 在org.apache.activemq.broker.BrokerService.startManagementContext(BrokerService.java:2031) 在org.apache.activemq.broker.BrokerService.start(BrokerService.java:477)
我认为这个问题是测试方法。但我不知道什么是不正确的。有人可以帮助我吗?谢谢。