发布于2026-07-03 阅读(0)
扫一扫,手机访问
在Ubuntu系统上把JSP和消息队列结合起来,说到底就是选一个趁手的中间件,再把客户端库集成到Web应用里。整个过程不复杂,但有几个关键节点需要留意。下面就来拆解一下。

要完成这个任务,通常需要走完下面这几步:
接下来用一个具体的例子带你走一遍,你就会明白这些步骤是怎么串起来的。
sudo apt update
sudo apt install rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server安装完成后,RabbitMQ服务就已经跑起来了,默认监听localhost的5672端口。
sudo apt install default-jdk
sudo apt install tomcat9
sudo systemctl start tomcat9
sudo systemctl enable tomcat9Ja va环境用默认的JDK就行,Tomcat 9是目前Ubuntu仓库里比较稳定的版本。启动后把服务设为开机自启,省得每次重启都要手动拉起来。
要让Ja va代码能和RabbitMQ通信,需要把amqp-client这个JAR包丢进Tomcat的共享库目录。
wget https://github.com/rabbitmq/amqp-client/releases/download/v5.14.2/amqp-client-5.14.2.jar
sudo cp amqp-client-5.14.2.jar /var/lib/tomcat9/lib/这一步别漏了,否则Servlet里引用RabbitMQ的类时会直接报ClassNotFoundException。
这里分为三个组件:一个发送消息的页面(send.jsp)、一个处理发送的Servlet(SendMessageServlet.ja va),以及一个接收消息的页面(receive.jsp)。
<%@ page import="com.rabbitmq.client.Channel" %>
<%@ page import="com.rabbitmq.client.Connection" %>
<%@ page import="com.rabbitmq.client.ConnectionFactory" %>
<%@ page contentType="text/html;charset=UTF-8" language="ja va" %>
Send Message
Send Message to RabbitMQ
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import ja vax.servlet.ServletException;
import ja vax.servlet.annotation.WebServlet;
import ja vax.servlet.http.HttpServlet;
import ja vax.servlet.http.HttpServletRequest;
import ja vax.servlet.http.HttpServletResponse;
import ja va.io.IOException;
@WebServlet("/sendMessage")
public class SendMessageServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = request.getParameter("message");
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare("hello", false, false, false, null);
channel.basicPublish("", "hello", null, message.getBytes());
response.getWriter().println("Message sent: " + message);
} catch (Exception e) {
e.printStackTrace();
response.getWriter().println("Error sending message: " + e.getMessage());
}
}
}<%@ page import="com.rabbitmq.client.Channel" %>
<%@ page import="com.rabbitmq.client.Connection" %>
<%@ page import="com.rabbitmq.client.ConnectionFactory" %>
<%@ page import="com.rabbitmq.client.DeliverCallback" %>
<%@ page contentType="text/html;charset=UTF-8" language="ja va" %>
Receive Message
Receive Messages from RabbitMQ
<%
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare("hello", false, false, false, null);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
out.println("Received message: " + message + "
");
};
channel.basicConsume("hello", true, deliverCallback, consumerTag -> {});
} catch (Exception e) {
e.printStackTrace();
out.println("Error receiving message: " + e.getMessage() + "
");
}
%>
这里的三个文件要放在对应的项目路径下:send.jsp和receive.jsp丢到Web应用的根目录,SendMessageServlet.ja va编译后放在WEB-INF/classes里。注意Servlet需要注册,这里用了@WebServlet注解,Tomcat 9会自动扫描。
把整个项目打包成war或者直接复制到Tomcat的webapps目录下,启动Tomcat。然后访问http://你的UbuntuIP:8080/你的项目名/send.jsp,输入消息点击发送,再打开receive.jsp页面,应该就能看到刚刚发送的消息被消费掉了。
从选型到部署,每一步都有明确的落脚点。当然这只是最基础的“点对点”通信,实际项目中你可能还需要考虑持久化、交换机类型、多消费者负载均衡等。但这个例子已经把核心流程——连接、声明队列、发布、消费——完整地跑了一遍,有了这个基础,再往深走就顺理成章了。
上一篇:如何清理不必要的Swap
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8