@@ -40,6 +40,50 @@ import javax.net.ssl.SSLContext
40
40
import scala .concurrent .ExecutionContext
41
41
42
42
object RabbitClient {
43
+ @ deprecated(message = " Use `default` to create Builder instead" , since = " 5.0.0" )
44
+ def apply [F [_]: Async ](
45
+ config : Fs2RabbitConfig ,
46
+ dispatcher : Dispatcher [F ],
47
+ sslContext : Option [SSLContext ] = None ,
48
+ // Unlike SSLContext, SaslConfig is not optional because it is always set
49
+ // by the underlying Java library, even if the user doesn't set it.
50
+ saslConfig : SaslConfig = DefaultSaslConfig .PLAIN ,
51
+ metricsCollector : Option [MetricsCollector ] = None ,
52
+ threadFactory : Option [F [ThreadFactory ]] = None
53
+ ): F [RabbitClient [F ]] = {
54
+ val internalQ = new LiveInternalQueue [F ](config.internalQueueSize.getOrElse(500 ))
55
+ val connection = ConnectionResource .make(config, sslContext, saslConfig, metricsCollector, threadFactory)
56
+ val consumingProgram = AckConsumingProgram .make[F ](config, internalQ, dispatcher)
57
+ val publishingProgram = PublishingProgram .make[F ](dispatcher)
58
+ val bindingClient = Binding .make[F ]
59
+ val declarationClient = Declaration .make[F ]
60
+ val deletionClient = Deletion .make[F ]
61
+
62
+ connection.map { conn =>
63
+ new RabbitClient [F ](
64
+ conn,
65
+ bindingClient,
66
+ declarationClient,
67
+ deletionClient,
68
+ consumingProgram,
69
+ publishingProgram
70
+ )
71
+ }
72
+ }
73
+
74
+ @ deprecated(message = " Use `default` to create Builder instead" , since = " 5.0.0" )
75
+ def resource [F [_]: Async ](
76
+ config : Fs2RabbitConfig ,
77
+ sslContext : Option [SSLContext ] = None ,
78
+ // Unlike SSLContext, SaslConfig is not optional because it is always set
79
+ // by the underlying Java library, even if the user doesn't set it.
80
+ saslConfig : SaslConfig = DefaultSaslConfig .PLAIN ,
81
+ metricsCollector : Option [MetricsCollector ] = None ,
82
+ threadFactory : Option [F [ThreadFactory ]] = None
83
+ ): Resource [F , RabbitClient [F ]] = Dispatcher [F ].evalMap { dispatcher =>
84
+ apply[F ](config, dispatcher, sslContext, saslConfig, metricsCollector, threadFactory)
85
+ }
86
+
43
87
sealed abstract class Builder [F [_]: Async ] private [RabbitClient ] (
44
88
config : Fs2RabbitConfig ,
45
89
sslContext : Option [SSLContext ],
0 commit comments