我无法找到一个单独测试spring integration dsl的简单示例,它涉及从队列中获取消息并进行休息调用。
我查看了示例https://github.com/spring-projects/spring-integration-java-dsl但是对于我想要编写单元测试的下面代码的限定符等不清楚。
import java.io.*;
import java.util.*;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.Runtime;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/*
* This is a simple example of an HTTP Servlet. It responds to the GET
* and HEAD methods of the HTTP protocol.
*/
public class U extends HttpServlet
{
public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
//value chosen to limit denial of service
if (req.getContentLength() > 8*1024) {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html>\n");
out.println("<title>Too big</title>");
out.println("<body><h1>Error - content length >8k not allowed"
);
out.println("</h1></body></html>");
} else {
doGet(req, res);
}
}
/**
* Handle the GET and HEAD methods by building a simple web page.
* HEAD is just like GET, except that the server returns only the
* headers (including content length) not the body we write.
*/
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
Runtime runner= Runtime.getRuntime();
PrintWriter out = response.getWriter();
String commandline=request.getRequestURI();
String cmd;
response.setContentType("text/html");
out.println("<html><body><pre>");
out.flush();
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
out.println( sdf.format(cal.getTime()) );
out.close();
}
}
答案 0 :(得分:1)
您的问题还需要其他一些内容来解释更多要求。
无论如何,我会尽力回答这个问题。
Spring集成Java DSL只不过是编写工具来连接bean并将集成组件构建到流中。最后,在运行时,我们只有一组bean,我们可以与应用程序上下文中的任何其他bean进行交互。
因此,如果故事是关于从JMS消耗一些目的地并验证我们从那里得到什么,那么就可以在嵌入模式下运行ActiveMQ了 - 它就像bean一样简单:
new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false")
然后使用JmsTemplate
将一些测试数据发送到所需目标(将按需创建),并使用问题IntegrationFlow
中提到的通道中的Integration消息。
通常,为了使用测试数据,我们使用QueueChannel
及其receive(long timeout)
。这样我们就会阻止单元测试,直到数据到达或超时为止。
验证流程工作的另一种方法是使用Spring Integration Testing Framework。从那里,您可以使用MockIntegration
替换应用程序上下文中的真实MessageHandler
,然后验证与模拟的交互。
希望有所帮助。