MCPcopy
hub / github.com/nats-io/nats.go / addEndpoint

Function addEndpoint

micro/service.go:418–484  ·  view source on GitHub ↗
(s *service, name, subject string, handler Handler, metadata map[string]string, queueGroup string, noQueue bool, msgLimit, bytesLimit int)

Source from the content-addressed store, hash-verified

416}
417
418func addEndpoint(s *service, name, subject string, handler Handler, metadata map[string]string, queueGroup string, noQueue bool, msgLimit, bytesLimit int) error {
419 if !nameRegexp.MatchString(name) {
420 return fmt.Errorf("%w: invalid endpoint name", ErrConfigValidation)
421 }
422 if !subjectRegexp.MatchString(subject) {
423 return fmt.Errorf("%w: invalid endpoint subject", ErrConfigValidation)
424 }
425 if !subjectRegexp.MatchString(queueGroup) {
426 return fmt.Errorf("%w: invalid endpoint queue group", ErrConfigValidation)
427 }
428 endpoint := &Endpoint{
429 service: s,
430 EndpointConfig: EndpointConfig{
431 Subject: subject,
432 Handler: handler,
433 Metadata: metadata,
434 QueueGroup: queueGroup,
435 QueueGroupDisabled: noQueue,
436 },
437 Name: name,
438 }
439
440 var sub *nats.Subscription
441 var err error
442 var options = endpointOpts{
443 msgLimit: msgLimit,
444 bytesLimit: bytesLimit,
445 }
446
447 if !noQueue {
448 sub, err = s.nc.QueueSubscribe(
449 subject,
450 queueGroup,
451 func(m *nats.Msg) {
452 s.reqHandler(endpoint, &request{msg: m})
453 },
454 )
455 } else {
456 sub, err = s.nc.Subscribe(
457 subject,
458 func(m *nats.Msg) {
459 s.reqHandler(endpoint, &request{msg: m})
460 },
461 )
462 }
463 if err != nil {
464 return err
465 }
466
467 // Apply pending limits if configured
468 if options.msgLimit != 0 || options.bytesLimit != 0 {
469 if err := sub.SetPendingLimits(options.msgLimit, options.bytesLimit); err != nil {
470 return err
471 }
472 }
473
474 s.m.Lock()
475 endpoint.subscription = sub

Callers 2

AddEndpointMethod · 0.85
AddEndpointMethod · 0.85

Calls 5

SetPendingLimitsMethod · 0.95
ErrorfMethod · 0.80
reqHandlerMethod · 0.80
QueueSubscribeMethod · 0.65
SubscribeMethod · 0.65

Tested by

no test coverage detected