小编Map*_*SVK的帖子

Pub/Sub - 无法提取未发送的消息

我公司的 Pub/Sub 有问题。我们的一些消息被卡住,并且最旧的未确认消息年龄随着时间的推移而增加。

1日图表:

在此输入图像描述 在此输入图像描述

当我进入指标资源管理器并选择过期确认截止日期计数时,这是一周图表。

在此输入图像描述

我决定找出这些消息被卡住的原因,但是当我运行 pull 命令(如下)时,我得到了Listed 0 items响应。因此不可能看到它们。

有没有办法弄清楚为什么某些消息显示为未确认?

此外,未确认的消息计数显示整个月的消息数量相同(大约 2k),尽管每天都有新消息发布。

以下是我们用于此订阅的参数: 在此输入图像描述

我试图通过将截止时间设置为 600 秒来修复此错误,但没有帮助。

此外,我想提一下,我们使用 node.js Pub/Sub 客户端库来处理消息。

google-cloud-platform gcloud google-cloud-pubsub

6
推荐指数
1
解决办法
3042
查看次数

无法读取未定义的属性“长度”-Angular 7

试图获取对象的图片链接。这些对象在数组中,打字稿中的方法如下所示:

getMealPicture(orderLineMeal: OrderLine): string {
    for (let meal of this.meals) {
      if (meal.id === orderLineMeal.mealId) {
        return meal.picture;
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

返回字符串,并将此字符串放入HTML中:

<img src="{{getMealPicture(orderLineMeal)}}" alt="" class="cartMeal-picture">
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR TypeError: Cannot read property 'length' of undefined
at CheckoutPageComponent.push../src/app/checkout-page/checkout-page.component.ts.CheckoutPageComponent.getMealPicture (checkout-page.component.ts:113)
at Object.eval [as updateRenderer] (CheckoutPageComponent.html:9)
at Object.debugUpdateRenderer [as updateRenderer] (core.js:22482)
at checkAndUpdateView (core.js:21857)
at callViewAction (core.js:22093)
at execEmbeddedViewsAction (core.js:22056)
at checkAndUpdateView (core.js:21853)
at callViewAction (core.js:22093)
at execComponentViewsAction (core.js:22035)
at checkAndUpdateView (core.js:21858)
Run Code Online (Sandbox Code Playgroud)

第一行指向此HTML img标签所在的行113。但是图像在那里,它们有时会在内容加载后加载第二到第二个。您是否认为这是问题所在?

这些膳食(this.meals)是从服务和后端.NET获取的。所以我在构造函数中初始化了这个数组:

meals: Meal[];

this.mealService.getAllMeals().subscribe( listOfMeals => {
  this.meals = …
Run Code Online (Sandbox Code Playgroud)

typescript angular

5
推荐指数
1
解决办法
8370
查看次数

Cloud Run:429:请求被中止,因为没有可用的实例

我们(作为一家公司)每天都会经历巨大的峰值。我们使用 Pub/Sub -> Cloud Run 组合。

我们遇到的问题是,当高流量到来时,Pub/Sub 会尝试同时将消息推送到 Cloud/Run,而无需任何流量控制。结果?

429:由于没有可用实例,请求被中止。

尽管这被标记为警告,但每个 4xx HTTP 响应都会导致消息重试传递。

因此,消息返回队列并等待。如果消息重复此过程并且仍然获取实例,Cloud Run 会再次返回 429,并且消息会发送回队列。此过程重复 x 次(取决于我们在最大传递尝试中设置的值)。之后,消息进入死信队列。

我们希望避免这种情况,最好不要收到任何 429,这样消息就不会来回传输,并且不会最终出现在死信订阅中,因为它不是我们想要的应用程序错误之一保留在那里,而是由 Pub/Sub 不控制流程并与 Cloud Run 协调引起的警告。

Pub/Sub 和推送订阅(Cloud Run 需要使用)都没有任何流量控制功能。


有没有办法控制发送到 Cloud Run 的消息数量以避免收到 429 响应?而且,当 Cloud Run 明显达到实例限制时,为什么 Pub/Sub 还要尝试交付。最好的方法是将消息保留在队列中,直到实例释放为止。


大多数答案可能会建议增加实例的限制。我们已经设置了 1000。这将无法扩展,因为即使我们将限制设置为 1500 并且出现巨大的峰值,我们也会超过限制并再次收到 429 条消息。

我能想到的唯一选择是一些流量控制。到目前为止,我们已经了解了 Cloud Tasks,但我们不确定这是否可以帮助我们。理想情况下,我们不想引入任何新服务,但如果有必要,我们会这样做。

感谢您提供的所有提示和时间!:)

google-cloud-platform google-cloud-pubsub google-cloud-tasks google-cloud-run

5
推荐指数
1
解决办法
2970
查看次数

按值对 ObservableList 对象进行排序 Java

我有一个学生班级,其中包含以下字段:

private int id;
private String firstName;
private String lastName;
private String imageLink;
private String email;
private String status;
private String fullName;
private int classId;  
private int percentage;
Button changeAttendanceButton;
ImageView attendanceImage;
ImageView photo;
Run Code Online (Sandbox Code Playgroud)

字段“状态”可以有 2 个值:1. 存在,2. 不存在

然后我有可观察列表:

private ObservableList<Student> allStudentsWithStatus = FXCollections.observableArrayList();
Run Code Online (Sandbox Code Playgroud)

所以我将学生存储在这个列表中。每个学生都有在场或缺席的状态。

我需要按状态对这个 ObservableList 进行排序。我希望目前状态的学生在该列表中名列前茅。

有小费吗?

我将不胜感激任何帮助。

java arrays sorting javafx

4
推荐指数
1
解决办法
5422
查看次数