我已经成功地从本地Eclipse安装程序将消息推送到ActiveMQ中。但是,当我尝试作为cron
作业从服务器执行时,相同的代码不会推送消息。它甚至不会在代码执行期间引发异常。
Java环境-1.8
使用的配套罐子:
代码:
try {
map = getMessageDetails(session,"MessageQueueEmail");
userName = map.get("userName");
password = map.get("password");
hostName = map.get("mqHostName");
queue = map.get("queueName");
// Create a ConnectionFactory
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(userName, password, hostName);
// Create a Connection
connection = factory.createConnection();
// start the Connection
connection.start();
System.out.println("MQ started connection");
// Create a Session
sessionMQ = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination Queue
Destination destination = sessionMQ.createQueue(queue);
// Create a MessageProducer from the Session to the Queue
messageProducer = sessionMQ.createProducer(destination);
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// Create a message
Message message = sessionMQ.createTextMessage(textMsg);
System.out.println("MQ Message sent successfully");
// Tell the producer to send the message
messageProducer.send(message);
} catch(Exception e) {
e.printStackTrace();
System.out.println("\n::::::::::::Error occurred sendEmailMessageToIntranet::::::::::::: " + e.getMessage());
}
答案 0 :(得分:0)
感谢大家的回应。将正确的证书文件导入服务器后,该问题得以解决。想知道为什么MQ尝试失败通知未记录
答案 1 :(得分:-1)
您的代码看起来还可以,除非您可能要过期。尝试使用PERSISTENT,很可能是您在cronjob中没有重定向stderr的问题?确保您执行以下操作:
* / 1 * * * * /something/send.sh &>> /something/out.log
然后早上检查。