当前位置:首页 > Java

java如何接收消息

2026-03-23 05:13:30Java

使用 Java 接收消息的方法

通过 Socket 接收消息

Socket 是 Java 中实现网络通信的基础工具,可以用于接收 TCP 消息。以下是一个简单的示例:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8080);
        Socket clientSocket = serverSocket.accept();
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String message = in.readLine();
        System.out.println("Received: " + message);
        in.close();
        clientSocket.close();
        serverSocket.close();
    }
}

通过消息队列接收消息

使用消息队列(如 RabbitMQ、Kafka)可以高效地接收异步消息。以下是 RabbitMQ 的示例:

import com.rabbitmq.client.*;

public class RabbitMQConsumer {
    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare("test_queue", false, false, false, null);

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println("Received: " + message);
        };
        channel.basicConsume("test_queue", true, deliverCallback, consumerTag -> {});
    }
}

通过 WebSocket 接收消息

WebSocket 适用于实时双向通信。以下是使用 Java WebSocket API 的示例:

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/ws")
public class WebSocketServer {
    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("Received: " + message);
    }
}

通过 HTTP 请求接收消息

使用 Spring Boot 可以轻松接收 HTTP 请求中的消息:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MessageController {
    @PostMapping("/message")
    public String receiveMessage(@RequestBody String message) {
        System.out.println("Received: " + message);
        return "Message received";
    }
}

通过 JMS 接收消息

Java 消息服务(JMS)提供了一种标准化的方式来接收消息。以下是 ActiveMQ 的示例:

java如何接收消息

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JMSConsumer {
    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = factory.createConnection();
        connection.start();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createQueue("test.queue");
        MessageConsumer consumer = session.createConsumer(destination);

        Message message = consumer.receive();
        if (message instanceof TextMessage) {
            System.out.println("Received: " + ((TextMessage) message).getText());
        }
        session.close();
        connection.close();
    }
}

以上方法涵盖了从低级网络通信到高级消息中间件的多种消息接收方式,可以根据具体需求选择适合的方案。

标签: 消息java
分享给朋友:

相关文章

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名.方法名…

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io.Fil…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…