Весенний облачный поток: отправка двух полезных данных? - PullRequest
0 голосов
/ 23 января 2020

Я новичок в весеннем облачном потоке, и мне интересно, есть ли способ отправить две полезные нагрузки сообщения для обработки другими службами.

Мой пример использования - у меня есть пользовательская служба, которую я Я использую в качестве клиентского приложения на данный момент. У меня есть служба учетных записей, связанная с пользователем, и служба продуктов.

Когда пользователь покупает продукт, я пытаюсь отправить userId вместе с productId в службу учетной записи, где служба учетной записи отправляет баланс и идентификатор продукта в службу продукта, где продукт Сервис определит, достаточно ли велик баланс для покупки продукта. Это возможно, или я должен попробовать другой подход?

Вот мой звонок со стороны клиента, но только отправка идентификатора пользователя:


    @GetMapping("/{userId}/purchase")
    public void buyProduct(@PathVariable("userId") int userId, @RequestParam("productId") int productId) {
            Message<Integer> msg =MessageBuilder.withPayload(userId).build();
            this.purchaseProduct.send(msg);
    }      

Я думал об использовании Spring интеграции, что-то на строки:

@Bean
    IntegrationFlow integrationFlow(AccountChannels c) {
        return IntegrationFlows.from(c.purchaseProduct())
                .handle(Integer.class,(payload,headers)->{
                    ///Handle here

                    return null;
                }).get();

    }

1 Ответ

2 голосов
/ 23 января 2020

Пара предложений.

  • Вместо отправки только userid в качестве полезной нагрузки, отправьте объект, содержащий идентификаторы пользователя и productId

  • Используйте запрос 'POST' вместо этого, поскольку это неидемпотентная операция изменения состояния.

    class PurchaseRequest {int userId; int productId; }

    @ PostMapping ("/ покупок") publi c void buyProduct (@RequestBody PurchaseRequest purchaseRequest) {...}

  • Рассмотреть возможность публикации события запроса на покупку Служба продукта прослушивает событие и просит службу учетной записи проверить баланс.

...