Вы можете иметь отправителя и получателя в одном приложении, если запросы приходят пакетами, и вы хотите сохранить их где-то до их обработки в случае сбоя сервера.Как правило, вы все равно не будете использовать встроенный брокер для этого.
Встроенные брокеры обычно используются только для тестирования.
Однако вы можете запустить встроенный брокер, который доступен извне;просто запустите BrokerService
, как у вас, но другое приложение должно соединиться с адресом tcp://...
, а не vm://...
.
РЕДАКТИРОВАТЬ
Приложение 1:
@SpringBootApplication
@RestController
public class So52654109Application {
public static void main(String[] args) {
SpringApplication.run(So52654109Application.class, args);
}
@Bean
public BrokerService broker() throws Exception {
final BrokerService broker = new BrokerService();
broker.addConnector("tcp://localhost:61616");
broker.setPersistent(false);
broker.start();
return broker;
}
@Autowired
private JmsTemplate template;
@RequestMapping(path = "/foo/{id}")
public String foo(@PathVariable String id) {
template.convertAndSend("someQueue", id);
return id + ": thank you for your request, we'll send an email to the address on file when complete";
}
}
Приложение 2:
application.properties
spring.activemq.broker-url=tcp://localhost:61616
и
@SpringBootApplication
public class So526541091Application {
public static void main(String[] args) {
SpringApplication.run(So526541091Application.class, args);
}
@JmsListener(destination = "someQueue")
public void process(String id) {
System.out.println("Processing request for id");
}
}
Понятно, что для простого приложения, подобного этому, выможет просто запустить прослушиватель в первом приложении.
Однако, поскольку в этой конфигурации нет постоянных сообщений, вы, скорее всего, будете использовать внешнего посредника для производственного приложения (или включить постоянство).