我是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)
我認爲這個問題是測試方法。但我不知道什麼是不正確的。有人可以幫助我嗎?謝謝。