要添加埃裏克森的回答以上:
這是獲取和瀏覽JMS隊列的例子:(使用的javax.jms-API 2.X)
// Set up the connection to the queue:
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "http-remoting://<host>:<port>");
Context namingContext = new InitialContext(env);
ConnectionFactory connectionFactory = (ConnectionFactory) namingContext.lookup("jms/RemoteConnectionFactory");
JMSContext context = connectionFactory.createContext("jms_user", "pwd");
// Get the JMS Queue:
Queue queue = (Queue) namingContext.lookup("jms/queue/exampleQueue");
// Create the JMS Browser:
QueueBrowser browser = context.createBrowser(queue);
// Browse the messages:
Enumeration<Message> e = browser.getEnumeration();
while (e.hasMoreElements()) {
Message message = (Message) e.nextElement();
log.debug(message.getBody(String.class) + " with priority: " + message.getJMSPriority());
}
...
確保您使用這些Maven依賴項:
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-jms-client-bom</artifactId>
<version>10.0.0.Final</version>
<type>pom</type>
</dependency>
謝謝!是否有可能從獨立的Java程序訪問隊列?最終,我將使用來自Java EE應用程序的隊列,但現在我只是試着更熟悉JMS。如果無法做到這一點,我可能會跳過這一步,但我希望有一些與Queue交互的代碼,而在我的應用程序中沒有任何其他複雜性。 – pkaeding 2010-01-23 04:24:18
通常可以從獨立應用程序執行此操作,但細節取決於您正在使用的JMS提供程序。例如,許多應用程序服務器提供了一個JNDI提供程序和JMS驅動程序,您可以在應用程序服務器之外的應用程序中使用它來建立連接。 – erickson 2010-01-23 04:55:20