Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0f8cc86

Browse files
authoredFeb 20, 2024··
Merge branch 'main' into main
2 parents 14d2f15 + 59e0528 commit 0f8cc86

File tree

4 files changed

+61
-67
lines changed

4 files changed

+61
-67
lines changed
 

‎src/accountingservice/kafka/trace_interceptor.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"go.opentelemetry.io/otel"
1010
"go.opentelemetry.io/otel/attribute"
1111
"go.opentelemetry.io/otel/propagation"
12-
semconv "go.opentelemetry.io/otel/semconv/v1.21.0"
12+
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
1313
"go.opentelemetry.io/otel/trace"
1414

1515
"github.com/IBM/sarama"
@@ -27,9 +27,9 @@ func NewOTelInterceptor(groupID string) *OTelInterceptor {
2727
oi.tracer = otel.Tracer("github.com/open-telemetry/opentelemetry-demo/accountingservice/sarama")
2828

2929
oi.fixedAttrs = []attribute.KeyValue{
30-
semconv.MessagingSystem("kafka"),
30+
semconv.MessagingSystemKafka,
3131
semconv.MessagingKafkaConsumerGroup(groupID),
32-
semconv.NetTransportTCP,
32+
semconv.NetworkTransportTCP,
3333
}
3434
return &oi
3535
}
@@ -52,7 +52,7 @@ func (oi *OTelInterceptor) OnConsume(msg *sarama.ConsumerMessage) {
5252
trace.WithAttributes(
5353
semconv.MessagingDestinationName(msg.Topic),
5454
semconv.MessagingKafkaMessageOffset(int(msg.Offset)),
55-
semconv.MessagingMessagePayloadSizeBytes(len(msg.Value)),
55+
semconv.MessagingMessageBodySize(len(msg.Value)),
5656
semconv.MessagingOperationReceive,
5757
semconv.MessagingKafkaDestinationPartition(int(msg.Partition)),
5858
),

‎src/checkoutservice/main.go

+49-55
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"context"
88
"encoding/json"
99
"fmt"
10-
semconv "go.opentelemetry.io/otel/semconv/v1.19.0"
10+
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
1111
"net"
1212
"net/http"
1313
"os"
@@ -124,7 +124,13 @@ type checkoutService struct {
124124
paymentSvcAddr string
125125
kafkaBrokerSvcAddr string
126126
pb.UnimplementedCheckoutServiceServer
127-
KafkaProducerClient sarama.AsyncProducer
127+
KafkaProducerClient sarama.AsyncProducer
128+
shippingSvcClient pb.ShippingServiceClient
129+
productCatalogSvcClient pb.ProductCatalogServiceClient
130+
cartSvcClient pb.CartServiceClient
131+
currencySvcClient pb.CurrencyServiceClient
132+
emailSvcClient pb.EmailServiceClient
133+
paymentSvcClient pb.PaymentServiceClient
128134
}
129135

130136
func main() {
@@ -153,12 +159,37 @@ func main() {
153159
tracer = tp.Tracer("checkoutservice")
154160

155161
svc := new(checkoutService)
162+
156163
mustMapEnv(&svc.shippingSvcAddr, "SHIPPING_SERVICE_ADDR")
164+
c := mustCreateClient(context.Background(), svc.shippingSvcAddr)
165+
svc.shippingSvcClient = pb.NewShippingServiceClient(c)
166+
defer c.Close()
167+
157168
mustMapEnv(&svc.productCatalogSvcAddr, "PRODUCT_CATALOG_SERVICE_ADDR")
169+
c = mustCreateClient(context.Background(), svc.productCatalogSvcAddr)
170+
svc.productCatalogSvcClient = pb.NewProductCatalogServiceClient(c)
171+
defer c.Close()
172+
158173
mustMapEnv(&svc.cartSvcAddr, "CART_SERVICE_ADDR")
174+
c = mustCreateClient(context.Background(), svc.cartSvcAddr)
175+
svc.cartSvcClient = pb.NewCartServiceClient(c)
176+
defer c.Close()
177+
159178
mustMapEnv(&svc.currencySvcAddr, "CURRENCY_SERVICE_ADDR")
179+
c = mustCreateClient(context.Background(), svc.currencySvcAddr)
180+
svc.currencySvcClient = pb.NewCurrencyServiceClient(c)
181+
defer c.Close()
182+
160183
mustMapEnv(&svc.emailSvcAddr, "EMAIL_SERVICE_ADDR")
184+
c = mustCreateClient(context.Background(), svc.emailSvcAddr)
185+
svc.emailSvcClient = pb.NewEmailServiceClient(c)
186+
defer c.Close()
187+
161188
mustMapEnv(&svc.paymentSvcAddr, "PAYMENT_SERVICE_ADDR")
189+
c = mustCreateClient(context.Background(), svc.paymentSvcAddr)
190+
svc.paymentSvcClient = pb.NewPaymentServiceClient(c)
191+
defer c.Close()
192+
162193
svc.kafkaBrokerSvcAddr = os.Getenv("KAFKA_SERVICE_ADDR")
163194

164195
if svc.kafkaBrokerSvcAddr != "" {
@@ -334,21 +365,20 @@ func (cs *checkoutService) prepareOrderItemsAndShippingQuoteFromCart(ctx context
334365
return out, nil
335366
}
336367

337-
func createClient(ctx context.Context, svcAddr string) (*grpc.ClientConn, error) {
338-
return grpc.DialContext(ctx, svcAddr,
368+
func mustCreateClient(ctx context.Context, svcAddr string) *grpc.ClientConn {
369+
c, err := grpc.DialContext(ctx, svcAddr,
339370
grpc.WithTransportCredentials(insecure.NewCredentials()),
340371
grpc.WithStatsHandler(otelgrpc.NewClientHandler()),
341372
)
342-
}
343-
344-
func (cs *checkoutService) quoteShipping(ctx context.Context, address *pb.Address, items []*pb.CartItem) (*pb.Money, error) {
345-
conn, err := createClient(ctx, cs.shippingSvcAddr)
346373
if err != nil {
347-
return nil, fmt.Errorf("could not connect shipping service: %+v", err)
374+
log.Fatalf("could not connect to %s service, err: %+v", svcAddr, err)
348375
}
349-
defer conn.Close()
350376

351-
shippingQuote, err := pb.NewShippingServiceClient(conn).
377+
return c
378+
}
379+
380+
func (cs *checkoutService) quoteShipping(ctx context.Context, address *pb.Address, items []*pb.CartItem) (*pb.Money, error) {
381+
shippingQuote, err := cs.shippingSvcClient.
352382
GetQuote(ctx, &pb.GetQuoteRequest{
353383
Address: address,
354384
Items: items})
@@ -359,27 +389,15 @@ func (cs *checkoutService) quoteShipping(ctx context.Context, address *pb.Addres
359389
}
360390

361391
func (cs *checkoutService) getUserCart(ctx context.Context, userID string) ([]*pb.CartItem, error) {
362-
conn, err := createClient(ctx, cs.cartSvcAddr)
363-
if err != nil {
364-
return nil, fmt.Errorf("could not connect cart service: %+v", err)
365-
}
366-
defer conn.Close()
367-
368-
cart, err := pb.NewCartServiceClient(conn).GetCart(ctx, &pb.GetCartRequest{UserId: userID})
392+
cart, err := cs.cartSvcClient.GetCart(ctx, &pb.GetCartRequest{UserId: userID})
369393
if err != nil {
370394
return nil, fmt.Errorf("failed to get user cart during checkout: %+v", err)
371395
}
372396
return cart.GetItems(), nil
373397
}
374398

375399
func (cs *checkoutService) emptyUserCart(ctx context.Context, userID string) error {
376-
conn, err := createClient(ctx, cs.cartSvcAddr)
377-
if err != nil {
378-
return fmt.Errorf("could not connect cart service: %+v", err)
379-
}
380-
defer conn.Close()
381-
382-
if _, err = pb.NewCartServiceClient(conn).EmptyCart(ctx, &pb.EmptyCartRequest{UserId: userID}); err != nil {
400+
if _, err := cs.cartSvcClient.EmptyCart(ctx, &pb.EmptyCartRequest{UserId: userID}); err != nil {
383401
return fmt.Errorf("failed to empty user cart during checkout: %+v", err)
384402
}
385403
return nil
@@ -388,15 +406,8 @@ func (cs *checkoutService) emptyUserCart(ctx context.Context, userID string) err
388406
func (cs *checkoutService) prepOrderItems(ctx context.Context, items []*pb.CartItem, userCurrency string) ([]*pb.OrderItem, error) {
389407
out := make([]*pb.OrderItem, len(items))
390408

391-
conn, err := createClient(ctx, cs.productCatalogSvcAddr)
392-
if err != nil {
393-
return nil, fmt.Errorf("could not connect product catalog service: %+v", err)
394-
}
395-
defer conn.Close()
396-
cl := pb.NewProductCatalogServiceClient(conn)
397-
398409
for i, item := range items {
399-
product, err := cl.GetProduct(ctx, &pb.GetProductRequest{Id: item.GetProductId()})
410+
product, err := cs.productCatalogSvcClient.GetProduct(ctx, &pb.GetProductRequest{Id: item.GetProductId()})
400411
if err != nil {
401412
return nil, fmt.Errorf("failed to get product #%q", item.GetProductId())
402413
}
@@ -412,12 +423,7 @@ func (cs *checkoutService) prepOrderItems(ctx context.Context, items []*pb.CartI
412423
}
413424

414425
func (cs *checkoutService) convertCurrency(ctx context.Context, from *pb.Money, toCurrency string) (*pb.Money, error) {
415-
conn, err := createClient(ctx, cs.currencySvcAddr)
416-
if err != nil {
417-
return nil, fmt.Errorf("could not connect currency service: %+v", err)
418-
}
419-
defer conn.Close()
420-
result, err := pb.NewCurrencyServiceClient(conn).Convert(ctx, &pb.CurrencyConversionRequest{
426+
result, err := cs.currencySvcClient.Convert(ctx, &pb.CurrencyConversionRequest{
421427
From: from,
422428
ToCode: toCurrency})
423429
if err != nil {
@@ -427,13 +433,7 @@ func (cs *checkoutService) convertCurrency(ctx context.Context, from *pb.Money,
427433
}
428434

429435
func (cs *checkoutService) chargeCard(ctx context.Context, amount *pb.Money, paymentInfo *pb.CreditCardInfo) (string, error) {
430-
conn, err := createClient(ctx, cs.paymentSvcAddr)
431-
if err != nil {
432-
return "", fmt.Errorf("failed to connect payment service: %+v", err)
433-
}
434-
defer conn.Close()
435-
436-
paymentResp, err := pb.NewPaymentServiceClient(conn).Charge(ctx, &pb.ChargeRequest{
436+
paymentResp, err := cs.paymentSvcClient.Charge(ctx, &pb.ChargeRequest{
437437
Amount: amount,
438438
CreditCard: paymentInfo})
439439
if err != nil {
@@ -465,12 +465,7 @@ func (cs *checkoutService) sendOrderConfirmation(ctx context.Context, email stri
465465
}
466466

467467
func (cs *checkoutService) shipOrder(ctx context.Context, address *pb.Address, items []*pb.CartItem) (string, error) {
468-
conn, err := createClient(ctx, cs.shippingSvcAddr)
469-
if err != nil {
470-
return "", fmt.Errorf("failed to connect email service: %+v", err)
471-
}
472-
defer conn.Close()
473-
resp, err := pb.NewShippingServiceClient(conn).ShipOrder(ctx, &pb.ShipOrderRequest{
468+
resp, err := cs.shippingSvcClient.ShipOrder(ctx, &pb.ShipOrderRequest{
474469
Address: address,
475470
Items: items})
476471
if err != nil {
@@ -507,9 +502,8 @@ func createProducerSpan(ctx context.Context, msg *sarama.ProducerMessage) trace.
507502
trace.WithSpanKind(trace.SpanKindProducer),
508503
trace.WithAttributes(
509504
semconv.PeerService("kafka"),
510-
semconv.NetTransportTCP,
511-
semconv.MessagingSystem("kafka"),
512-
semconv.MessagingDestinationKindTopic,
505+
semconv.NetworkTransportTCP,
506+
semconv.MessagingSystemKafka,
513507
semconv.MessagingDestinationName(msg.Topic),
514508
semconv.MessagingOperationPublish,
515509
semconv.MessagingKafkaDestinationPartition(int(msg.Partition)),

‎src/quoteservice/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44

5-
FROM php:8.2-cli as base
5+
FROM php:8.3-cli as base
66

77
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
88
RUN chmod +x /usr/local/bin/install-php-extensions \
@@ -17,7 +17,7 @@ CMD php public/index.php
1717
USER www-data
1818
EXPOSE ${QUOTE_SERVICE_PORT}
1919

20-
FROM composer:2.6 AS vendor
20+
FROM composer:2.7 AS vendor
2121

2222
WORKDIR /tmp/
2323
COPY ./src/quoteservice/composer.json .

‎src/quoteservice/composer.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
"description": "Quote Service part of OpenTelemetry Demo",
44
"license": "Apache-2.0",
55
"require": {
6-
"php": ">= 8.2",
6+
"php": ">= 8.3",
77
"ext-json": "*",
88
"ext-pcntl": "*",
99
"monolog/monolog": "3.5.0",
10-
"open-telemetry/api": "1.0.0",
11-
"open-telemetry/sdk": "1.0.0",
12-
"open-telemetry/exporter-otlp": "1.0.0",
13-
"open-telemetry/opentelemetry-auto-slim": "1.0.0",
10+
"open-telemetry/api": "1.0.3",
11+
"open-telemetry/sdk": "1.0.8",
12+
"open-telemetry/exporter-otlp": "1.0.3",
13+
"open-telemetry/opentelemetry-auto-slim": "1.0.4",
1414
"open-telemetry/detector-container": "1.0.0",
1515
"open-telemetry/opentelemetry-logger-monolog": "1.0.0",
16-
"guzzlehttp/guzzle": "7.8.0",
16+
"guzzlehttp/guzzle": "7.8.1",
1717
"php-di/php-di": "7.0.6",
1818
"php-di/slim-bridge": "3.4.0",
1919
"php-http/guzzle7-adapter": "1.0.0",

0 commit comments

Comments
 (0)
Please sign in to comment.