我使用Spring Cloud方法来构建一些应该互相交互的微服务.对于微服务之间的消息传递,我打算使用RabbitMQ和Spring AMQP,但在看了Spring Cloud Stream之后,我感到很失落.在我看来,Spring Cloud Stream是下一个抽象层次(可能太强大,但你应该得到整体印象),它有许多非常有用的功能.所以我想知道为什么有人会使用Spring AMQP进行新的开发?当一个微服务向另一个微服务发送消息并收到回复时,你能否提供Spring Spring Stream的任何Spring AMQP优势?
谢谢.
我正在使用 Spring Web Flux Reactive、MongoDB 和 Angular 构建实时事件流应用程序(例如股票汇率)。我想构建以下管道:MongoDB -> Reactive MongoDB Driver -> Spring Web Reactive MongoDB Repository -> Spring Web Reactive Controller -> Angular(通过服务器发送的事件)。
这是我的 Spring Web 反应式控制器:
@GetMapping(value = "/test", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<LiveRate> test() {
Flux<LiveRate> res = liveRateRepository.findByLastUpdate(1504580678).log(); // I query hard-coded value and MongoDB returns 4 events
return res;
}
Run Code Online (Sandbox Code Playgroud)
这是我的角度代码:
var source = new EventSource('http://localhost:8080/test');
source.addEventListener('message', function(e) {
console.log(e.data);
}, false);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,Angular 无限次返回 4 个事件,Spring 也不断查询 MongoDB。我的理解是,使用服务器发送事件方法 Spring 应该返回它拥有的所有事件并继续等待新事件,但看起来 Angular 不断要求越来越多的事件。
如果我在浏览器中点击http://localhost:8080/test …
我在 AWS 上将 Spring Boot 应用程序作为 Systemd 服务运行。结果,所有日志消息与 Linux 日志消息一起转到 system.log,这使得日志难以阅读。
什么是不淹没 system.log 并为每个应用程序/微服务保留单独日志的最佳方法?是 Log4j 2 吗?你能推荐替代品吗?