一、添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mysolace</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.solace</groupId>
<artifactId>solace-messaging-client</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</project>
二、生产者
package cn.edu.tju;
import com.solace.messaging.MessagingService;
import com.solace.messaging.config.SolaceProperties;
import com.solace.messaging.config.profile.ConfigurationProfile;
import com.solace.messaging.publisher.DirectMessagePublisher;
import com.solace.messaging.publisher.OutboundMessage;
import com.solace.messaging.publisher.OutboundMessageBuilder;
import com.solace.messaging.receiver.DirectMessageReceiver;
import com.solace.messaging.receiver.MessageReceiver;
import com.solace.messaging.resources.Topic;
import com.solace.messaging.resources.TopicSubscription;
import java.util.Properties;
public class SolaceProducer {
public static void main(String[] args) {
final Properties properties = new Properties();
properties.setProperty(SolaceProperties.TransportLayerProperties.HOST, "xx.xx.xx.xx:55555"); // host:port
properties.setProperty(SolaceProperties.ServiceProperties.VPN_NAME, "default"); // message-vpn
properties.setProperty(SolaceProperties.AuthenticationProperties.SCHEME_BASIC_USER_NAME, "admin");
properties.setProperty(SolaceProperties.AuthenticationProperties.SCHEME_BASIC_PASSWORD, "admin"); // client-password
properties.setProperty(SolaceProperties.ServiceProperties.RECEIVER_DIRECT_SUBSCRIPTION_REAPPLY, "true"); // subscribe Direct subs after reconnect
final MessagingService messagingService = MessagingService.builder(ConfigurationProfile.V1)
.fromProperties(properties).build().connect(); // blocking connect to t
final DirectMessagePublisher publisher = messagingService.createDirectMessagePublisherBuilder()
.onBackPressureWait(1).build().start();
OutboundMessageBuilder messageBuilder = messagingService.messageBuilder();
while (true) {
try {
Thread.sleep(5000); // take a pause
OutboundMessage message = messageBuilder.build(("Hello World!"));
String topicString = "hello";
System.out.printf(">> Calling send() on %s%n",topicString);
publisher.publish(message, Topic.of(topicString));
} catch (RuntimeException e) {
System.out.printf("### Exception caught during producer.send(): %s%n",e);
} catch (InterruptedException e) {
// Thread.sleep() interrupted... probably getting shut down
}
}
}
}
三、消费者
package cn.edu.tju;
import com.solace.messaging.MessagingService;
import com.solace.messaging.config.SolaceProperties;
import com.solace.messaging.config.profile.ConfigurationProfile;
import com.solace.messaging.publisher.DirectMessagePublisher;
import com.solace.messaging.publisher.OutboundMessage;
import com.solace.messaging.publisher.OutboundMessageBuilder;
import com.solace.messaging.receiver.DirectMessageReceiver;
import com.solace.messaging.receiver.MessageReceiver;
import com.solace.messaging.resources.Topic;
import com.solace.messaging.resources.TopicSubscription;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;
public class SolaceConsumer {
public static void main(String[] args) throws InterruptedException {
final Properties properties = new Properties();
CountDownLatch latch = new CountDownLatch(1);
properties.setProperty(SolaceProperties.TransportLayerProperties.HOST, "xx.xx.xx.xx:55555"); // host:port
properties.setProperty(SolaceProperties.ServiceProperties.VPN_NAME, "default"); // message-vpn
properties.setProperty(SolaceProperties.AuthenticationProperties.SCHEME_BASIC_USER_NAME, "admin"); // client-username
properties.setProperty(SolaceProperties.AuthenticationProperties.SCHEME_BASIC_PASSWORD, "admin"); // client-password
properties.setProperty(SolaceProperties.ServiceProperties.RECEIVER_DIRECT_SUBSCRIPTION_REAPPLY, "true"); // subscribe Direct subs after reconnect
final MessagingService messagingService = MessagingService.builder(ConfigurationProfile.V1)
.fromProperties(properties).build().connect(); // blocking connect to t
final DirectMessageReceiver receiver = messagingService.createDirectMessageReceiverBuilder()
.withSubscriptions(TopicSubscription.of("hello")).build().start();
final MessageReceiver.MessageHandler messageHandler = (inboundMessage) -> {
System.out.printf("consumer RECEIVED A MESSAGE %s ",inboundMessage.getPayloadAsString()); //
System.out.println();
};
receiver.receiveAsync(messageHandler);
latch.await();
}
}