Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Marat Pavlov
/
AlexAdapter
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
9eaadc67
authored
Mar 02, 2022
by
AlexNasyr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
гавно сраное
parent
1868ac05
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
22 additions
and
14 deletions
DDO_Application/Controllers/apiController.cs
DDO_Application/Model/ActiveMqExtensions.cs
DDO_Application/Model/ITypedConsumer.cs
DDO_Application/Model/MessageCunsomer.cs
DDO_Application/Model/MessageProducer.cs
DDO_Application/Model/ReceivedMessage.cs → DDO_Application/Model/TestMessage.cs
DDO_Application/Startup.cs
DDO_Application/Controllers/apiController.cs
View file @
9eaadc67
...
...
@@ -5,6 +5,7 @@ using DDO_Application.Model;
using
System
;
using
System.Threading.Tasks
;
using
System.Net
;
using
ActiveMQ.Artemis.Client.Transactions
;
namespace
DDO_Application.Controllers
{
...
...
@@ -41,7 +42,7 @@ namespace DDO_Application.Controllers {
[
HttpPost
]
[
Route
(
"[controller]/sendmsg/{msg}"
)]
public
async
Task
<
IActionResult
>
SendMessage
(
string
msg
)
{
var
@event
=
new
ReceivedMessage
{
Id
=
1
,
Message
=
msg
};
var
@event
=
new
TestMessage
{
Id
=
1
,
Message
=
msg
};
await
_messageProducer
.
PublishAsync
(
@event
);
return
StatusCode
((
int
)
HttpStatusCode
.
Created
,
null
);
}
...
...
DDO_Application/Model/ActiveMqExtensions.cs
View file @
9eaadc67
...
...
@@ -10,18 +10,20 @@ using System.Threading.Tasks;
namespace
DDO_Application.Model
{
public
static
class
ActiveMqExtensions
{
public
static
IActiveMqBuilder
AddTypedConsumer
<
TMessage
,
TConsumer
>(
this
IActiveMqBuilder
builder
,
RoutingType
routingType
)
where
TConsumer
:
class
,
ITypedConsumer
<
TMessage
>
{
public
static
IActiveMqBuilder
AddTypedConsumer
<
TMessage
,
TConsumer
>(
this
IActiveMqBuilder
builder
,
string
address
,
RoutingType
routingType
)
where
TConsumer
:
class
,
ITypedConsumer
<
TMessage
>
{
builder
.
Services
.
TryAddScoped
<
TConsumer
>();
builder
.
AddConsumer
(
"test"
,
routingType
,
Handle
Message
<
TMessage
,
TConsumer
>);
builder
.
AddConsumer
(
address
,
routingType
,
HandleCustomer
Message
<
TMessage
,
TConsumer
>);
return
builder
;
}
private
static
async
Task
HandleMessage
<
TMessage
,
TConsumer
>(
Message
message
,
IConsumer
consumer
,
IServiceProvider
serviceProvider
,
CancellationToken
token
)
where
TConsumer
:
class
,
ITypedConsumer
<
TMessage
>
{
private
static
async
Task
Handle
Customer
Message
<
TMessage
,
TConsumer
>(
Message
message
,
IConsumer
consumer
,
IServiceProvider
serviceProvider
,
CancellationToken
token
)
where
TConsumer
:
class
,
ITypedConsumer
<
TMessage
>
{
var
msg
=
JsonSerializer
.
Deserialize
<
TMessage
>(
message
.
GetBody
<
string
>());
using
var
scope
=
serviceProvider
.
CreateScope
();
var
typedConsumer
=
scope
.
ServiceProvider
.
GetService
<
TConsumer
>();
await
typedConsumer
.
ConsumeAsync
(
msg
,
token
);
await
consumer
.
AcceptAsync
(
message
);
}
}
}
\ No newline at end of file
DDO_Application/Model/ITypedConsumer.cs
View file @
9eaadc67
DDO_Application/Model/MessageCunsomer.cs
View file @
9eaadc67
...
...
@@ -5,12 +5,12 @@ using System.Threading.Tasks;
using
ActiveMQ.Artemis.Client.Transactions
;
namespace
DDO_Application.Model
{
public
class
MessageCunsomer
:
ITypedConsumer
<
Received
Message
>
{
public
class
MessageCunsomer
:
ITypedConsumer
<
Test
Message
>
{
public
MessageCunsomer
()
{
}
public
async
Task
ConsumeAsync
(
Received
Message
message
,
CancellationToken
cancellationToken
)
{
public
async
Task
ConsumeAsync
(
Test
Message
message
,
CancellationToken
cancellationToken
)
{
// тут логика
...
...
DDO_Application/Model/MessageProducer.cs
View file @
9eaadc67
using
ActiveMQ.Artemis.Client
;
using
ActiveMQ.Artemis.Client.Transactions
;
using
System.Text.Json
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
DDO_Application.Model
{
...
...
@@ -10,10 +12,11 @@ namespace DDO_Application.Model {
_producer
=
producer
;
_address
=
"test"
;
}
public
MessageProducer
(
I
Anonymous
Producer
producer
,
string
address
)
{
_producer
=
producer
;
public
MessageProducer
(
IProducer
producer
,
string
address
)
{
_producer
=
producer
as
IAnonymousProducer
;
_address
=
address
;
}
public
async
Task
PublishAsync
<
T
>(
T
message
)
{
var
serialized
=
JsonSerializer
.
Serialize
(
message
);
var
msg
=
new
Message
(
serialized
);
...
...
DDO_Application/Model/
Received
Message.cs
→
DDO_Application/Model/
Test
Message.cs
View file @
9eaadc67
namespace
DDO_Application.Model
{
public
class
Received
Message
{
public
class
Test
Message
{
public
int
Id
{
get
;
set
;
}
public
string
Message
{
get
;
set
;
}
}
...
...
DDO_Application/Startup.cs
View file @
9eaadc67
...
...
@@ -36,11 +36,12 @@ namespace DDO_Application {
services
.
AddHostedService
<
ApiHostedService
>();
services
.
AddSingleton
<
IApiService
,
ApiProcessingService
>();
// turn enable ActiveMQ support in project
//services.AddActiveMq("ddoApp-cluster", new[] { Endpoint.Create(host: "192.168.2.19", port: 5672, "guest", "guest") })
services
.
AddActiveMq
(
"ddoApp-cluster"
,
new
[]
{
ActiveMQ
})
.
AddAnonymousProducer
<
MessageProducer
>()
//.AddProducer<MessageProducer>(testQueue.Out, RoutingType.Multicast)
.
AddTypedConsumer
<
ReceivedMessage
,
MessageCunsomer
>(
RoutingType
.
Multicast
);
services
.
AddActiveMq
(
"ddoApp-cluster"
,
new
[]
{
Endpoint
.
Create
(
host
:
"192.168.2.19"
,
port
:
5672
,
"guest"
,
"guest"
)
})
//services.AddActiveMq("ddoApp-cluster", new[] { ActiveMQ })
//.AddAnonymousProducer<MessageProducer>()
.
AddProducer
<
MessageProducer
>(
testQueue
.
Out
)
//.AddTypedProducer<TestMessage, TypedProducer>(testQueue.Out, RoutingType.Multicast)
.
AddTypedConsumer
<
TestMessage
,
MessageCunsomer
>(
testQueue
.
In
,
RoutingType
.
Multicast
);
services
.
AddActiveMqHostedService
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment