我构建了 3 个应用程序,每个应用程序需要 20 多分钟进行评估。我将 3 个文件放在以下目录中
ProjectcContextPath/WEB-INF/classes/PackageName/ExternalFileProcess.class
ProjectcContextPath/JSPFiles/index.jsp
ProjectcContextPath/WEB-INF/classes/AnotherFile.class
我想从另一个Java
文件名中调用这 3 个应用程序MessageConsumer.java
,基于消息头。这些消息是从Activemq
.
我不想一次获取所有消息。一旦上一个完成,那么只有它MessageConsumer.java
从中获取另一条消息Activemq
。
为了您更好地理解,我做了一些模型。检查它们。检查后你们会清楚地理解。
工作流程:
xml数据结构。
我做了什么:
我构建了最后的 3 个应用程序,它们运行良好。
我写了一个函数,如果你将 xmlfilepath 和 Message-head 值作为参数传递,那么它会返回相应的
ApplicationRealPath
标签值。
我想做的事:
我想从中获取消息
Activemq
从消息中查找消息头
将消息头和 xml 文件路径传递给另一个函数。获取相应的
ApplicationRealPath
值。并触发该应用程序。
Activemq
一旦先前触发的应用程序进程完成,再从中获取一条消息
真的我从 3 天开始尝试这个,但我还是没有弄明白。我尝试了以下代码。它不工作
package PackageName;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageConsumer extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//creating connectionfactory object for way
ConnectionFactory connectionFactory=new
ActiveMQConnectionFactory("admin","admin","tcp://localhost:61617");
//establishing the connection b/w this Application and Activemq
Connection connection=connectionFactory.createConnection();
QueueSession session=(QueueSession) connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Queue queue=session.createQueue("MessageTesing");
final QueueReceiver queueReceiver =session.createReceiver(queue);
connection.start();
while (true) {
Message message = queueReceiver.receive();
message.acknowledge();
TextMessage textmsg=(TextMessage) message;
if (textmsg.getText()=="TestMessage35") {
RequestDispatcher rd=request.getRequestDispatcher("servletName");
rd.forward(request, response ) ;
System.out.println(textmsg.getJMSDestination());
}
}
}
catch (Exception e) {
// TODO: handle exception
}
}
}
我是java新手,你能用代码解释清楚吗?
谢谢。