小编use*_*934的帖子

Kafka 消息 VS REST 调用

如今在微服务世界中,我在我的工作场所看到很多使用 kafka 消息传递的设计,当您可以使用微服务之间的 rest api 调用获得类似的结果时。从技术上讲,您可以完全停止使用 rest api 调用,而是使用 kafka 消息传递。我真的很想知道最佳实践,优缺点,微服务之间何时使用 api 调用,何时使用 kafka 消息传递。

让我们举一个现实生活中的例子:

我有库存服务和供应商服务。日常供应商服务调用供应商 API 来获取新项目,这些需要转移到库存服务中。项目数最多可达 10,000 个对象。

对于这个用例,最好是:

  1. 从供应商 API 获取新数据后,调用库存服务的 REST API 来存储新项目。

  2. 从供应商 API 获取新数据后,将它们作为消息发送到 kafka 主题,供库存服务使用

您会选择哪种方式以及考虑什么

rest apache-kafka microservices kafka-consumer-api spring-kafka

41
推荐指数
2
解决办法
1万
查看次数

Spring Data Mongodb:如何转储通过QueryDsl生成的原始查询/命令?

我正在使用Spring Data的Querydsl集成来使用谓词执行我的查询.

findAll(predicate, pageable)
Run Code Online (Sandbox Code Playgroud)

有没有办法转储执行的实际原始查询/命令?

我也查看了这个问题的答案,它对我不起作用. 配置MongoDB Java驱动程序的日志记录

- 更新 - 我设法通过在application.properties(而不是log4j.properties)中添加logging.level.org.mongodb.driver = DEBUG来使日志工作正常工作

但是,我仍然无法看到正在执行的原始查询:

2016-03-23 21:50:56 DEBUG查询:56 - 查询完成2016-03-23 21:50:56 DEBUG查询:56 - 在连接上发送命名空间testdb.reservation的查询[connectionId {localValue:4,serverValue: 42631}]到服务器ds046785.mongolab.com:39186

java mongodb querydsl spring-data spring-data-mongodb

12
推荐指数
1
解决办法
1969
查看次数

MongoDB并发问题

我的应用程序的场景类似于在Facebook上发送好友请求.

当用户A向用户B发送好友请求时,在内部创建新好友请求文档.在用户B也想要向A发送好友请求的稍后时间,系统会发现好友请求文件存在,因此他们应该是彼此的朋友,不会创建新的好友请求文档.

我试图找出用户A和用户B同时向对方发送朋友请求的情况,这将创建2个朋友请求文档并导致未确定的行为...

谢谢你的建议..真的很感激!

编辑:一些人建议使用请求队列来解决这个问题; 但是,我对使用队列感到困惑,因为我认为这将使我的休息api端点处理请求顺序.通过使用队列,我不会失去多线程的所有好处吗?我不禁想象,如果我的服务有数百万个请求排队并等待由于这个问题逐个执行,那将是多么糟糕.有没有人在生产过程中看到类似问题?

concurrency locking mongodb nosql

10
推荐指数
1
解决办法
461
查看次数

如何使用React-Helmet优化SPA的SEO?

我的项目是使用react js的单页面应用程序.我听说Google可以抓取javascript页面,包括反应js单页面应用程序,而不需要服务器端渲染(即使它通常更适合SEO).

但是,当我使用网站管理员工具:抓取并呈现为谷歌时,谷歌机器人所看到的以及我的网页访问者看到的内容都是空白的.即使我可以添加特定网址到谷歌索引,谷歌只使用我放在我的静态index.html文件中的标题和描述标签,它不会获得嵌套的反应头盔组件的标题和描述.有没有人有这方面的经验?欣赏它!

seo meta-tags node.js single-page-application reactjs

9
推荐指数
1
解决办法
1606
查看次数

如何使用Firebase跟踪iOS的应用程序卸载/删除事件?

我需要使用Firebase获取iOS的每月卸载次数.我知道对于Android,即使它不是很准确,我也可以使用app_remove事件,但现在已足够了.从iTunesConnect或Playstore,他们只提供用户保留数据,例如x天后仍有多少用户使用您的应用,或者每天卸载,这不是我想要的.

google-analytics ios firebase

8
推荐指数
1
解决办法
4214
查看次数

如何将 Flux<MyObject> 包装在 ResponseEntity 中

我需要我的端点以以下 json 格式返回数据:

{
  "code": "SUCCESS",
  "message": "SUCCESS",
  "errors": null,
  "data": []
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器代码:

@GetMapping(value = "/productSubcategories", produces = MediaType.APPLICATION_JSON_VALUE)
    public Flux<MyDTO> getMyObjects() {

        return myObjectService.getAll()
                .map(myObject -> modelMapper.map(productSubcategory, MyObject.class));
    }
Run Code Online (Sandbox Code Playgroud)

将所有 MyDTO 对象包装在 json 响应的“数据”部分中的最佳方法是什么?

reactive-programming project-reactor spring-webflux

8
推荐指数
1
解决办法
2112
查看次数

QueryDsl MongoDB-访问深度嵌套的对象以进行查询

使用时,尝试访问嵌套对象时遇到问题BooleanBuilder。我已经读过默认值是2级,但是对于我的用例,我需要访问3级嵌套对象。因此,我已经添加@QueryInit了许多其他答案中指出的内容。但是我仍然无法访问它。这是我的代码:

@Document
public class Order implements Serializable {

     @QueryInit(*.*)
     private Item item;

}

public class Item implements Serializable {
   private Details details;
}

public class Details implements Serializable {
   private String name;
}

public static BooleanExpression name(String name) {
  QOrder order = QOrder.order;
  return order.item.details.name.eq(name)
}
Run Code Online (Sandbox Code Playgroud)

我有QOrderQItem生成了类并且可以正常工作。但是details.description给出了错误,因为QDetails未生成类。我如何使其生成QDetails

java querydsl spring-data-mongodb spring-boot

8
推荐指数
1
解决办法
163
查看次数

Selenium HtmlUnitDriver Web Scrape从EC2 Server获得了Captcha页面

我写了一个简单的网络刮刀来抓expedia.com.使用Java Selenium HtmlUnitDriver,如果我在本地运行它,我能够成功从网站上抓取数据.

然而,当我上到EC2服务器部署此,它总是返回我在哪里Expedia的检测它作为一个机器人的页面,因此,它会显示这个验证码,以证明人类正在访问它.

我认为它可能与ecpedia服务器的IP地址有关,这些服务器被expedia.com以某种方式列入黑名单?

我试过抓不同的网站,他们不关心/不做人体测试.

知道如何解决这个问题吗?

我尝试但仍被检测为机器人的东西:

  • 将用户代理更改为我在本地浏览器上使用的内容
  • 设置代理

更新:实际设置代理服务器给我一个不同的错误:

当前网址为https://www.expedia.com/things-to-do/search?location=Paris&pageNumber=1

htmlString:

<!--?xml version="1.0" encoding="ISO-8859-1"?-->
<html>
 <head> 
  <title>
      500 Internal Server Error
    </title> 
 </head> 
 <body> 
  <h1> Internal Server Error </h1> 
  <p> The server encountered an internal error or misconfiguration and was unable to complete your request. </p> 
  <p> Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error. </p> 
  <p> More …
Run Code Online (Sandbox Code Playgroud)

selenium htmlunit web-scraping selenium-webdriver htmlunit-driver

7
推荐指数
1
解决办法
343
查看次数

Spring MongoDB 数据 elemMatch 简单

{ _id: 1, results: [ "tokyo", "japan" ] }
{ _id: 2, results: [ "sydney", "australia" ] }




db.scores.find(
   { results: { $elemMatch: { $regex: *some regex* } } }
)
Run Code Online (Sandbox Code Playgroud)

如何使用 spring mongodb 数据查询条件转换这个简单的 elemMatch 示例?

如果数组包含对象我可以这样做

Criteria criteria = 
   Criteria.where("results").
   elemMatch(
      Criteria.where("field").is("tokyo")
   );
Run Code Online (Sandbox Code Playgroud)

但在我的问题中,我没有“领域”

更新:

我认为 Veeram 的答案在尝试后会起作用

Criteria criteria = 
   Criteria.where("results").
   elemMatch(
      new Criteria().is("tokyo")
   );
Run Code Online (Sandbox Code Playgroud)

它不返回任何内容。我错过了什么吗?

当我检查查询对象时,它指出以下内容:

Query: { "setOfKeys" : { "$elemMatch" : { }}}, Fields: null, Sort: null
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我像上面那样使用 Criteria.where("field") 修改标准,

Query: { "setOfKeys" : …
Run Code Online (Sandbox Code Playgroud)

regex spring-data spring-data-mongodb spring-mongodb

7
推荐指数
1
解决办法
4647
查看次数

Java Spring WebFlux与RxJava

我开始学习Java的反应式编程。整个反应式范式对我来说都是新的。

在学习过程中,我遇到了几个术语/库,例如Spring WebFlux,projectreactor和RxJava。我希望有人能解释这些差异是什么,以及您在项目中使用的是哪种,以及为什么要做出这种选择。

我读到Spring WebFlux实际上在内部使用了projectreactor的Flux / Mono。这简化了Spring Webflux相对于RxJava的优缺点的问题?

reactive-programming rx-java project-reactor spring-webflux

6
推荐指数
3
解决办法
1451
查看次数